还有另一个与NginX的502错误

我试图把一个服务器@家到位与一些基本的服务。 所有服务都运行在专用的虚拟机上。 每个虚拟机托pipe在vSphere 5.5上。 到目前为止我有:

  • nginx作为反向代理的Debian喘气:192.168.1.12
  • 使用nodeJS作为webapp服务器的Debian喘息:192.168.1.43
    • 192.168.1.43:3000 =>在192.168.1.43:3001上进行redirect的http web服务器
    • 192.168.1.43:3001 => https服务器提供的服务
  • Debian喘气madsonic安装:192.168.1.35
    • 正如在文档中所说,我把–https-port = 443在configuration中启用https访问

我使用nginx能够有这样的事情:

  • myapp.mydomaine.com =>转到nodejs @ 192.168.1.43
  • music.mydomain.com =>去madsonic @ 192.168.1.35

我遵循一个教程,并在/ 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上的第一个redirect工作。 当我在madsonic服务器上只有http时,音乐redirect工作。 当我在madsonic服务器上激活https时,出现502 Bad错误(但Firefox中的URL是https://music.domain.com )。

我也试过:

 server { listen 80; server_name music.domain.com; return 301 https//:192.168.1.35; } 

也没有工作。 我不知道它可能来自哪里。 有人有一个build议? 非常感谢。

PS:对不起,如果我的英文不完美。 我尽我所能: – s

首先,Nginx是你的SSL终结者。 这意味着您不需要同时以HTTP和HTTPS模式运行您的应用程序。 HTTP就足够了。

所以,对于你的应用程序,configuration可能看起来像这样:

 server { listen 192.168.1.12:80; server_name myapp.domain.com; location / { rewrite ^ https://$server_name$request_uri? permanent; } } 

上面的指令将所有HTTP请求redirect到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; } } 

我在这里select了proxy_pass中的端口3000来指向你的应用程序的HTTP版本。 您需要closures应用程序的重新引导到端口3001。

关于您的music.domain.comredirect – 对于HTTP,您使用proxy_pass参数中的端口4040,而不使用HTTPS。 我假设madsonic服务器只侦听端口4040,所以configuration可能是这样的:

 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; } } 

希望这可以帮助。