nginx还有一个502错误
我正试着把一个server@home提供一些基本服务。所有服务都运行在专用VM中。每个虚拟机都托管在vSphere 5.5上。到目前为止,我已经:nginx还有一个502错误,nginx,reverse-proxy,Nginx,Reverse Proxy,我正试着把一个server@home提供一些基本服务。所有服务都运行在专用VM中。每个虚拟机都托管在vSphere 5.5上。到目前为止,我已经: 使用nginx作为反向代理的Debian哮喘病:192.168.1.12 Debian wheezy和nodeJS用作webapp服务器:192.168.1.43 192.168.1.43:3000=>在192.168.1.43:3001上进行重定向的http web服务器 192.168.1.43:3001=>提供服务的https web服务器
- 使用nginx作为反向代理的Debian哮喘病:192.168.1.12
- Debian wheezy和nodeJS用作webapp服务器:192.168.1.43
- 192.168.1.43:3000=>在192.168.1.43:3001上进行重定向的http web服务器
- 192.168.1.43:3001=>提供服务的https web服务器
- 装有madsonic的Debian哮喘病:192.168.1.35
- 如文档中所述,我在配置中放入--https port=443以启用https访问
- myapp.mydomaine.com=>转到nodejs@192.168.1.43
- music.mydomain.com=>转到madsonic@192.168.1.35
server {
listen 80;
server_name myapp.domaine.com;
location / {
proxy_pass http://192.168.1.43:3000;
}
}
server {
listen 443;
server_name myapp.domain.com;
ssl on;
ssl_certificate [...];
ssl_certificate_key [...];
location / {
proxy_pass https://192.168.1.43:3001;
}
}
server {
listen 80;
server_name music.domain.com;
location / {
proxy_pass http://192.168.1.35:4040;
}
}
server {
listen 443;
server_name music.domain.com;
ssl on;
ssl_certificate [...];
ssl_certificate_key [...];
location / {
proxy_pass https://192.168.1.35;
}
}
myapp上的第一个重定向工作正常。当我在madsonic服务器上只有http时,音乐重定向就起作用了。当我在madsonic服务器上激活https时,我得到一个502错误网关(但Firefox中的URL是错误的)
我还尝试了其他一些方法,如这里提到的:
也不管用
在/var/logs/nginx/error.log中,我还看到502错误是由于SSL\u do\u握手错误(SSl23\u GET\u SERVER\u HELLO:tlsv1)引起的。不知道是否与502错误有关
我有点困惑,因为其他https服务工作正常。有人有建议吗?非常感谢。以下是用户“desasteralex”的答案,该用户在serverfault.com上发布了相同问题的答案。它起作用了,所以我在这里分享他的答案(顺便说一句:D)
首先,Nginx是您的SSL终止符。这意味着你不需要在HTTP和HTTPS模式下运行你的应用程序。HTTP就足够了 因此,对于您的应用程序,配置可能如下所示:
server { listen 192.168.1.12:80; server_name myapp.domain.com; location / { rewrite ^ https://$server_name$request_uri? permanent; } }
上面的指令将所有HTTP请求重定向到HTTPS
server { listen 192.168.1.12:443; server_name myapp.domain.com; ssl on; ssl_certificate [...]; ssl_certificate_key [...]; location / { proxy_pass https://192.168.1.43:3000; } }
我在这里选择了proxy_pass中的端口3000,以指向应用程序的HTTP版本。您需要关闭应用程序到端口3001的重定向
关于您的music.domain.com重定向-对于HTTP,您在proxy_pass参数中使用端口4040,而在HTTPS中不使用端口4040。我假设madsonic服务器只侦听端口4040,因此配置可能如下所示:
server { listen 192.168.1.12:80; server_name music.domain.com; location / { rewrite ^ https://$server_name$request_uri? permanent; } }
server { listen 192.168.1.12:443; server_name music.domain.com; ssl on; ssl_certificate [...]; ssl_certificate_key [...]; location / { proxy_pass https://192.168.1.35:4040; } }
希望这有帮助