wes*_*bos 5 nginx node.js express
我正在尝试设置nginx,以便它在端口3000上运行应用程序.
当我访问mydomain.com:3000时,应用程序正常运行.我想让它在没有端口的情况下运行.
我有nginx设置,它正常工作.我有一个SSL证书设置,它正常工作(我能够看到带有SSL的nginx启动页面)我有www重定向正常工作.
我现在要做的部分是使用在端口3000上运行的内容并使其在端口80上运行.
这是我的配置文件:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
当我使用此设置访问该页面时,出现500内部服务器错误.我究竟做错了什么?
我想通了,因为我使用SSL,我需要确保它是https.这是我的最终配置:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
server {
listen 80;
server_name p3000;
location / {
proxy_pass http://0.0.0.0:3000;
include /etc/nginx/proxy_params;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11125 次 |
最近记录: |