nginx config for express app running on port 3000
我正在尝试设置nginx,以使其拉动在端口3000上运行的应用程序。
当我访问mydomain.com:3000时,该应用程序开始运行。我希望它在没有端口的情况下运行。
我有nginx设置,并且可以正常工作。
我有一个SSL证书设置,并且运行正常(我能够看到带有SSL的Nginx起始页)
我的www重定向正常工作。
我现在要做的部分是获取在端口3000上运行的内容,并使其在端口80上运行。
这是我的配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | upstream myapp { server 127.0.0.1:3000; } server { #listen 80 is default server_name www.mydomain.com; return 301 $scheme://mydomain.com$request_uri; } server { listen 80; listen [::]:80; listen 443 default ssl; ssl on; ssl_certificate /root/certs/bundle.crt; ssl_certificate_key /root/certs/mydomain.key; server_name mydomain.com; if ($ssl_protocol ="") { rewrite ^ https://$server_name$request_uri? permanent; } location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; try_files @node $uri.html; } location @node { proxy_pass https://myapp; } } |
当我使用此设置访问页面时,出现500个内部服务器错误。我在做什么错?
1 2 3 4 5 6 7 8 | server { listen 80; server_name p3000; location / { proxy_pass http://0.0.0.0:3000; include /etc/nginx/proxy_params; } } |
我知道了,因为我使用的是SSL,所以我需要确保它是https。这是我的最终配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | upstream app_nodejs { server 127.0.0.1:3000; } server { #listen 80 is default server_name www.mydomain.com; return 301 $scheme://mydomain.com$request_uri; } server { listen 80; listen [::]:80; listen 443 default ssl; ssl on; ssl_certificate /root/certs/bundle.crt; ssl_certificate_key /root/certs/mydomain.key; server_name mydomain.com; if ($ssl_protocol ="") { rewrite ^ https://$server_name$request_uri? permanent; } location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass https://app_nodejs; proxy_redirect off; } } |