我试图把一个服务器@家到位与一些基本的服务。 所有服务都运行在专用的虚拟机上。 每个虚拟机托pipe在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上的第一个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; } }
希望这可以帮助。