这是在 VPS 上运行的 Ubuntu 14.04 的全新安装。
例如下面的方法可以工作:
server {
listen 8080 default_server;
root /var/www;
location / {
try_files $uri $uri/ =404;
}
}
server {
listen 80 default_server;
root /var/www;
location / {
try_files $uri $uri/ =404;
}
}
当我访问该页面时它将是我的index.html
。
但如果我尝试让 nginx 监听另一个端口(35729):
server {
listen 35729 default_server;
root /var/www;
location / {
try_files $uri $uri/ =404;
}
}
或者甚至可能稍微更常用一点(例如 nodejs 服务器有 3000 个)
我得到的只是一条错误消息,提示该网页不可用。
但是,查看 netstat 发现 nginx 正在监听该端口:
tcp 0 0 0.0.0.0:35729 0.0.0.0:* LISTEN 15349/nginx -g daem
并且 iptables 看起来像这样(这意味着没有防火墙对吗?)
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
并sudo ufw status verbose
产生
Status: inactive
这是怎么回事?
答案1
跑步:
# On Linux
sudo netstat -lntp
# On FreeBSD
netstat -a | grep 'LISTEN'
# On Windows
netstat -bnp TCP -p TCPv6
并检查正在nginx
监听的端口
更改配置文件后不要忘记
sudo service nginx restart
然后再次检查netstat
,哪个端口nginx
正在监听
如果看起来正确,请检查您的防火墙,可能防火墙上只戳了特定的端口。
Ctrl+F5
在浏览器中刷新 缓存
PS 如果您下次提问时提供您的操作系统,那么发现问题会容易得多
答案2
我遇到了类似的问题,结果发现我必须在供应商的网站上在我的服务器(Ubuntu 12.04)的客户面板上打开特定端口。