当我设置简单的 nginx 位置来捕获端口 3000 上的所有到 root 的流量并代理传递到 nodeJS 时,当我请求 http://example.com/something
当我输入 mydomain.net 时,我从 nodeJS 获得了结果,但是当我尝试 example.com/something 时,我得到 502 Bad Gateway。
server {
listen xxx.xxx.xxx.xxx:80;
server_name example.com www.example.com;
location / {
proxy_pass http://xxx.xxx.xxx.xxx:3000/;
}
}
我希望nodeJS能够处理url的其余部分(/之后),因为当nodeJS单独在端口80上时,这可以在没有nginx的情况下工作。
在文件中粘贴以下代码,并确保将 example.com 更改为您的域(或 IP),并将 1337 更改为您的 Node.js 应用程序端口:
server {
listen 80;
server_name example.com;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass "http://127.0.0.1:3000";
}
}
比
sudo nginx -t
sudo service nginx restart
我发现 nginx 代码没问题,我的 SSL 配置似乎在这里出现问题,在检查 nginx 的错误日志后,再次启动并成功将所有位置获取到 NodeJS。谢谢大家。
这对我有用:
server {
listen 80;
listen [::]:80;
server_name www.frostoven.com;
root /var/www/frostoven.com;
location / {
proxy_pass http://127.0.0.1:3000$request_uri;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $http_host;
proxy_cache_bypass $http_upgrade;
}
}
对于 SSL,您可以在
listen 80
部分下面添加类似的内容:
listen 443 ssl;
listen [::]:443 ssl;
include snippets/self-signed.conf;
include snippets/ssl-params.conf;
以上内容不仅适用于 root,还适用于任何 URI,例如
example.com/whatever?test
。