我知道我已经接近目标了,但我似乎无法将我的node.js
应用程序连接到NGINX
反向代理。我的节点应用程序在本地运行,配置文件测试正常。上传到 Digital Ocean 后无法连接。
错误是502错误的网关。
有些东西缺失了,经过几个小时的谷歌搜索和测试,我仍然找不到问题所在。非常感谢大家的帮助!
这些是我的文件中的相关行nginx.conf
。
server {
listen 80;
listen [::]:80;
server_name myDomainName.com;
root /www/html;
location / {
index index.html;
}
location /proxytest {
proxy_pass "http://www.myDomainName.com:8080";
}
}
这是我的node.js
测试应用程序。
const express = require('express');
const app = express();
app.get('/', (request, response) => {
response.send('Hello World!');
});
app.listen(8080, () => {
console.log('Server is up on port 8080');
});
答案1
如果所有这些都运行在一个实例上,那么通常 Nginx 想要与在端口 8080 上运行的本地 nodejs 服务进行通信,因此 localhost 比www.myDomainName.com
这通常是这样的
location /proxytest {
proxy_pass http://localhost:8080;
}
无论您将 proxy_pass 值设置为何值,您都应该从 nginx box 命令行检查该地址是否可用。
# curl -I http://localhost:8080
HTTP/1.1 200 OK
X-Powered-By: Express
Date: Tue, 06 Feb 2018 02:23:35 GMT
Connection: keep-alive
您还可以检查 nginx 上的错误日志,看看它是否报告了任何有趣的内容。
vi /var/log/nginx/error.log
其他可以尝试的事情
如果您使用的是 selinux 发行版(CentOS、Fedora、RHEL……),请尝试禁用 selinux,然后再次尝试请求
# setenforce Permissive
setenforce: SELinux is disabled