我刚刚安装了Ubuntu 12.04服务器和nginx 1.2.7,已从已启用网站的default
中删除,并将我自己的文件添加到sites-available
和符号链接sites-enabled
。然后重新启动nginx。
问题:但是,访问该网址不会加载该网站。 netstat -nlp | grep nginx
和netstat -nlp | grep 80
都不会返回任何结果! lsof -i :80
也不会返回任何内容。来自另一台服务器的dig
返回正确的IP地址,因此它不应该是DNS问题。我能够连接到apache,我现在停止了它的服务。 nginx日志也没有显示任何内容。
我该如何解决这个问题?
/etc/nginx/site-available/mysite.com
server {
listen 80;
server_name www.mysite.com mysite.com *.mysite.com;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
root /var/www/mysite/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args ;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_read_timeout 300;
}
}
答案 0 :(得分:123)
我遇到了同样的问题,解决方案是我没有正确地对我的siteconf文件进行符号链接。尝试运行vim /etc/nginx/sites-enabled/mysite.com
- 你能做到吗?我得到了“权限被拒绝。”
如果没有运行:
rm /etc/nginx/sites-enabled/mysite.com
ln -s /etc/nginx/sites-available/mysite.com /etc/nginx/sites-enabled/mysite.com
答案 1 :(得分:26)
如果您的日志对此问题保持沉默,则可能不包括已启用站点的目录。告诉站点正在加载的一种简单方法是将服务器块中的错误/访问日志路径设置为唯一路径,重新加载nginx,并检查文件是否已创建。
确保/etc/nginx/nginx.conf中的http上下文中存在以下include指令。
http {
...
include /etc/nginx/sites-enabled/*;
}
答案 2 :(得分:5)
我遇到了同样的问题,我在通过HTTP连接时遇到Failed to load resource: net::ERR_CONNECTION_REFUSED
错误,但在HTTPS上很好。跑netstat -tulpn
并看到nginx没有绑定到端口80的IPv4。做完这里描述的一切。原来是 非常 愚蠢:
确保sites-available
文件实际上已启用default_server
。
希望这可以节省一些其他可怜的白痴。
答案 3 :(得分:4)
您可能需要将nginx绑定到端口80两次。那是你的完整配置文件吗?你有另一个声明听口80吗?
答案 4 :(得分:3)
我发现使用以下步骤调试nginx很有帮助:
1 ...确保nginx正在运行。
ps aux | grep nginx
2 ......检查是否已绑定到相关端口的进程。
lsof -n -i:80
3 ...确保已重新加载nginx。
sudo nginx -t
sudo nginx -s reload
在Mac上,
brew services restart nginx
不足以重新加载nginx。
4 ......尝试手动创建简单的响应,以确保您的位置路径不会被弄乱。当使用proxy_pass
将请求转发到其他正在运行的应用程序时出现问题时,这特别有用。
location / {
add_header Content-Type text/html;
return 200 'Here I am!';
}
答案 5 :(得分:2)
;
中/etc/nginx/nginx.conf
缺少分号include /etc/nginx/servers-enabled/*;
,例如nginx -t
之前的行,可以绕过此修改,/etc/nginx/nginx.conf
检查将会成功。
因此,请检查;
中的所有说明是否以分号 public static async Task<string> messaging_server() {
using (var messagebus1 = new TinyMessageBus("ExampleChannel"))
{
messagebus1.MessageReceived +=
(sender, e) =>
{
var encodedMessage = Encoding.UTF8.GetString(e.Message);
Debug.WriteLine(encodedMessage);
return encodedMessage;
}
while (true)
{
#infinite loop
}
}
}
结束。
答案 6 :(得分:1)
您是否检查过您的nginx二进制文件是否真的存在?请检查是否
#whereis nginx
输出二进制路径并使用/etc/init.d/nginx中的init脚本检查此路径。 e.g。
DAEMON=/usr/sbin/nginx
(在我的初始化脚本“test -x $ DAEMON || exit 0”中被调用,无论如何这个脚本什么都没有返回 - 我的二进制文件完全丢失了)
答案 7 :(得分:0)
在我的情况下,这些网络命令的输出显示nginx已正确绑定到端口80,但是这些端口不能被nmap
外部访问或看到。
当我怀疑有防火墙时,事实证明机器上的旧iptables
规则正在从这些端口重定向流量并与nginx冲突。使用sudo iptables-save
查看所有当前适用的规则。
答案 8 :(得分:0)
虽然我们都认为我们不会犯傻错误,但我们会这么做。
因此,如果您正在调查NGINX问题,并且所有迹象都表明它应该可以工作,那么您应该远离文件并向下游看。
系统防火墙,硬件防火墙,Nat路由器/防火墙。
对于我自己来说,这是我的路由器,我经营一个家庭实验室,因此我可以使用NGINX进行反向代理,从而远距离访问路由器背后的服务,因为我的路由器仅处理基于IP的传入数据,而不处理任何主机名,我确定这都是正常现象。
无论如何,几天前我在保护网络安全时出现了问题,删除了一些不再需要的端口转发,并且我不小心删除了端口80。
是的,就像将端口再次转发到NGINX一样简单,并且所有问题都已解决。
我现在将以极度羞愧的头垂着头走开,尽管我留下了这个答案,以表达我对这个导致我发现自己的错误的人们的感谢。
所以谢谢你。
答案 9 :(得分:0)
我在服务器上也遇到了同样的问题,在这里列出了解决方法:
步骤1 ::安装Ngnix
sudo apt update
sudo apt install nginx
第2步–调整防火墙
sudo ufw app list
您应该获得应用程序配置文件的列表:
Output Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH
如您所见,Nginx提供了三个配置文件:
Nginx Full::此配置文件同时打开端口80(正常,未加密的网络流量)和端口443(TLS / SSL加密的流量)
Nginx HTTP::此配置文件仅打开端口80(正常,未加密的网络流量)
Nginx HTTPS::此配置文件仅打开端口443(TLS / SSL加密流量)
由于本指南中尚未为服务器配置SSL,因此我们只需要允许端口80上的流量即可。您可以通过键入以下内容来启用它:
sudo ufw allow 'Nginx HTTP'
您可以通过键入以下内容来验证更改:
sudo ufw status
步骤3 –检查您的Web服务器
systemctl status nginx
现在检查端口80,它对我有用,希望对您也有用。