我有一个Ubuntu Node.js服务器与我的http://www.example.com网站一起工作。 我使用httpx:// localhost:3000进行测试,然后当我将其部署到Ubuntu时, 我仍然需要进入端口(www.example.com:3000)。我被告知要实施一个 反向代理删除端口3000要求。我安装了nginx并添加了 以下: sudo nano / etc / nginx / sites-available / default ----------删除所有复制/粘贴--------------------------
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://67.205.128.21:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
这有效,并删除了进入端口3000的要求。 然后我发现我需要使用SSL /证书运行我的应用程序。 我能够进行nginx更改以使其工作为https://www.example.com:3000。 但现在我需要摆脱端口3000的要求。 我尝试了我用于http:的相同反向代理设置,但是没有用。 如何配置nginx以删除端口3000要求。 以下是我在浏览器中输入时的情况:
http://67.205.128.21 - Works
http://example.com - Redirects to https://example ; Error: Redirects too many times
http://www.example.com - Redirects to https://example ; Error: Redirects too many times
http://example.com:3000 - Works
http://www.example.com:3000 - Works
当前的nginx配置:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
location ~ /.well-known {
allow all;
}
# SSL configuration
#
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
include snippets/ssl-example.com.conf;
include snippets/ssl-params.conf;
server_name example.com;
location / {
proxy_pass http://67.205.128.21:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
答案 0 :(得分:0)
这应该有效:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
location ~ /.well-known {
allow all;
}
}
然后,在同一文件或不同文件中,添加一个额外的服务器块。
# SSL configuration
#
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
include snippets/ssl-example.com.conf;
include snippets/ssl-params.conf;
server_name example.com;
location / {
proxy_pass http://67.205.128.21:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
我认为问题在于您只有一个server
块,因此当执行重定向时,它会落入同一个服务器块中,然后再次重定向。