佬们, 问个nginx的问题

我的nginx.conf如下设置, 为什么还能通过IP访问?

$ cat nginx/nginx.conf                                                    

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    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;
    keepalive_timeout  65;

    server {
        listen 80;
        server_name guoji.de www.guoji.de;        
        location / {
            # 反代到 app 服务的 5244 端口
            proxy_pass http://alist:5244;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}
3 Likes

服务监听本地端口吗

能不能 IP 访问和 nginx 也没啥关系吧,你把 alist 监听 IP 改成 127.0.0.1,端口在防火墙对外拒绝就好了

server 直接捕获所有未匹配到域名的请求然后返回403或者重定向一下

默认情况下,若没有服务器设置了default_server,则nginx会使用唯一一个server作为默认服务器来响应ip直连回复,如果不需要ip访问,新建一个服务名为“_”,监听0.0.0.0 default_server的服务器捕获全部非域名请求,返回404。

    server {
        listen 80 default_server;
        server_name _;  
        return 404;
        }
    }
1 Like

alist docker 没有暴露端口
nginx docker 向外暴露了80 443
同一个网络

按道理我nginx监听80端口, 绑定域名, ip应该不能访问才是

设置一个默认的server监听80端口就可以了

原来是这个问题,我是创建了一个example.com作为默认站点响应

就是这位佬友的这种方法

通过你的方法搞定了 :smiley:

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。