我有一个由前端和后端服务组成的网络应用程序。我想通过加密证书来保护我的前端服务,但后来我必须在前端和后端之间使用安全连接。我在自定义端口上提供后端服务。为了保护后端,我想使用nginx来代理我的服务器。但是,我正在努力做到正确。这是我的nginx配置:
server {
listen 8082;
server_name <my_domain_name>;
ssl on;
ssl_certificate /etc/letsencrypt/live/<my_domain>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<my_domain>/privkey.pem;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv3;
location / {
proxy_pass http://0.0.0.0:8081;
}
}
首先,我只想通过,没有ssl。但它没有像这样工作,8082没有提供任何东西。如果它可以工作,我想我可以在这里使用我的letsencrypt证书,虽然我不确定,是否可能并且我理解正确。< / p>
我将不胜感激任何帮助!非常感谢提前!
更新
我发现问题出在iptables中。我将端口8082添加到它们后,它工作。我不明白,为什么我可以连接到端口8081,虽然它不在iptables中。
但是,现在,当我尝试https://my_domain:8082时,我会得到ERR_SSL_PROTOCOL_ERROR
。
我还尝试将ssl
添加到listen
指令,例如listen 8082 ssl;
。然后我得到ERR_CONNECTION_RESET
。
答案 0 :(得分:1)
仅供记录。问题确实存在于指令listen
中。
添加
listen 8082 ssl;
并删除
ssl on;
解决了它。
这是一个谜,为什么它不起作用并且之前给了我ERR_CONNECTION_RESET
。现在它有效。
答案 1 :(得分:0)
location @backend {
proxy_pass http://backend;
}
@backend是一个命名位置,允许您像变量一样引用它,例如
location / {
error_page 404 = @backend;
}
为您的问题尝试类似
location / {
proxy_pass http://backend;
}