我正在尝试使用一些基本服务来安装服务器@ home。所有服务都运行到专用VM。每个VM都托管在vSphere 5.5上。到目前为止,我有:
我使用nginx来做这样的事情:
我按照教程编辑了/ etc / nginx / sites-enabled中的“默认”文件。这是它的样子:
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 Bad gateway错误(但Firefox中的URL为https://music.domain.com)。
我还尝试了其他一些方法,例如: How to redirect on the same port from http to https with nginx reverse proxy
也没用。
我还在/var/logs/nginx/error.log中看到502错误是由于SSL_do_handshake错误(SSl23_GET_SERVER_HELLO:tlsv1)引起的。不知道它是否与502错误有关。
我有点困惑,因为其他https服务工作正常。有人有建议吗?非常感谢。
答案 0 :(得分:1)
以下是用户" 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中不使用。我假设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; } }
希望这有帮助。