请教下,nginx 能运行,但却不工作?

我在 centos8 stream 上通过 yum install nginx 安装了 nginx,通过命令 sudo netstat -plutn | grep nginx 检查,nginx 是正常运行的

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      9962/nginx: master

配置文件 nginx.conf

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    include /etc/nginx/conf.d/*.conf;

}

conf.d 中的唯一配置文件 xc.conf

server {
        listen 80;
        return 403;
}

即通过 ip 访问,则得到 403 的返回。

现在遇到的问题是,通过 ip 访问,并不能得到 403 的返回。而访问 ip:8080 能正常访问到一个通过 docker 拉起来的应用。

感觉 nginx 虽然是运行了,但并没有正常工作。

PS, 所有的端口都已经打开

请问这个该怎么排查呢?多谢。

阅读 1.3k
avatarAI BotBETA

根据您提供的信息,您已经通过yum install nginx安装了nginx,并且通过sudo netstat -plutn | grep nginx检查,nginx是正常运行的。但是,通过ip访问nginx时,您得到的是403的返回,而不是预期的404。

有几个可能的原因导致这个问题:

  1. 防火墙设置:请确保您的防火墙允许通过80端口进行通信。您可以使用以下命令检查防火墙设置:
sudo iptables -L

如果防火墙阻止了80端口的通信,请将其开放。

  1. Nginx配置问题:根据您提供的配置文件,您在conf.d目录下有一个名为xc.conf的文件。该文件只返回403响应,但这是否正确?您可以尝试使用以下命令查看默认的404页面:
curl -X GET http://localhost/

如果这个命令返回一个正确的404页面,说明您的Nginx配置没有问题。否则,您可能需要检查xc.conf文件中的配置是否正确。

  1. Docker容器问题:您提到通过docker拉起来的应用可以通过ip:8080访问。这可能是由于您的应用程序容器在8080端口上运行。请确保您的应用程序容器在8080端口上正确配置。

综上所述,您可以尝试以下步骤来解决问题:

  1. 检查防火墙设置,确保80端口的通信是允许的。
  2. 检查Nginx配置文件xc.conf,确保其配置正确。
  3. 如果您使用的是Docker容器,请确保应用程序容器在正确的端口上运行。

如果您仍然无法解决问题,请提供更多详细信息,以便我可以更好地帮助您诊断问题。

3 个回答

nginx -T 先检查一下配置文件,有没有多出来的东西。怀疑是改错了文件,或者改了配置之后没有重新加载配置。

按照现在的配置,应该是只要访问80端口,都会返回403。

我看你其他回答的评论,80是没有access与error日志的。那就是外部网络无法进入。

如果是云服务器,确认一下安全组有没有开通相关端口。如果是家庭网络,国内个人不允许使用80端口。

你确认好你的网络环境。

首先你修改配置文件重启了nginx服务了吗

systemctl restart nginx 

然后并不会得到403返回,那得到的情况是什么样的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题