• nginx配置奇怪的问题


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 binq2000 2024-07-26 00:44 采纳率: 16.7% 浏览 11 首页/ PHP / nginx配置奇怪的问题 nginx运维 nginx 1.25.1仅配置了内网IP192.168.1.103的访问,但是输入公网IP也能访问到系统页面,具体配置如下: #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include 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 logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name 10.43.112.200; root /home/www; charset utf-8; #access_log /var/log/nginx/log/host.access.log main; location / { index index.php index.html index.htm; proxy_connect_timeout 300s; proxy_send_timeout 300s; proxy_read_timeout 300s; client_max_body_size 50m; client_body_buffer_size 5m; } error_page 404 /error-404.html; error_page 403 /error-403.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { # root html; client_body_temp_path /tmp; fastcgi_pass 127.0.0.1:9000; fastcgi_read_timeout 300; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; expires off; } add_header X-Content-Type-Options nosniff; add_header 'Referrer-Policy' 'origin'; add_header X-Download-Options "noopen" always; add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; add_header X-Permitted-Cross-Domain-Policies "master-only"; add_header X-Frame-Options SAMEORIGIN; add_header Content-Security-Policy "default-src 'self' data: *.xxx.com 'unsafe-inline' 'unsafe-eval' mediastream: "; add_header X-Content-Type-Options: nosniff; add_header X-XSS-Protection "1; mode=block"; location ~ ^/log { deny all; } } } 展开全部 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    2条回答 默认 最新

    • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-26 00:44
      关注

      引自免费微信小程序:皆我百晓生

      从你提供的配置来看,你的Nginx确实配置了只监听内网IP地址(192.168.1.103)。然而,你提到输入公网IP也能访问到系统页面,这可能涉及到一些其他配置或者网络设置。这个问题可能有以下几个原因:

      1. DNS配置问题:如果DNS解析中同时配置了公网IP和内网IP指向同一主机,那么通过公网IP也能访问到服务器。你需要检查DNS配置是否正确。
      2. 路由器配置问题:如果你的路由器配置了对公网IP的转发,那么即使Nginx配置只监听内网IP,也能通过公网IP访问。检查你的路由器设置是否有端口转发或其他相关设置。
      3. 防火墙配置问题:某些防火墙可能允许来自公网的请求直接穿透到内网服务器。确认你的防火墙设置是否正确。

      针对这些可能的问题,你可以采取以下措施进行排查和解决:

      1. 检查DNS配置:确认DNS解析是否同时配置了公网IP和内网IP指向同一主机。如果是这样,你可能需要修改DNS配置,只使用内网IP进行解析。
      2. 检查路由器设置:确认路由器是否对公网IP进行了端口转发或其他相关设置。如果是的话,你可能需要修改路由器设置,停止对公网IP的转发。
      3. 检查防火墙设置:确认防火墙是否允许来自公网的请求直接穿透到内网服务器。如果是的话,你可能需要修改防火墙规则,阻止来自公网的未经授权的访问。

      在检查以上配置的同时,也请确保Nginx的配置文件没有其他地方存在可能导致公网访问的配置错误。如果有必要,可以尝试重启Nginx服务以查看是否解决了问题。如果问题仍然存在,你可能需要进一步深入调查网络环境和服务器配置。

      评论 编辑记录
    • GISer Liu 2024-07-26 00:45
      关注

      该回答引用自GPT-3.5, 由博主 GISer Liu 编写:

      问题分析

      用户的问题是:尽管Nginx配置文件中仅指定了内网IP 192.168.1.103 作为服务器名称(server_name),但通过公网IP也能访问到系统页面。

      关键点

      1. **Nginx配置文件中仅配置了内网IP 192.168.1.103**。
      2. 通过公网IP也能访问到系统页面

      可能的原因

      1. Nginx默认配置:可能存在其他默认配置的Nginx服务器块(server 块)监听了所有IP地址(包括公网IP)。
      2. 防火墙配置:防火墙可能允许公网IP访问内网IP。
      3. 网络路由问题:网络路由可能将公网IP的请求转发到内网IP。

      解决方案

      1. 检查Nginx默认配置

      首先,检查Nginx配置文件中是否存在其他默认配置的服务器块。通常,Nginx会默认监听所有IP地址的80端口。

      server {
          listen 80 default_server;
          server_name _;
          return 444;  # 返回无响应状态码
      }
      

      如果存在这样的配置,可以将其添加到Nginx配置文件中,以阻止通过公网IP的访问。

      2. 检查防火墙配置

      确保防火墙配置没有允许公网IP访问内网IP。可以使用以下命令检查和配置防火墙规则:

      # 检查当前防火墙规则
      sudo iptables -L -n
      
      # 添加规则阻止公网IP访问内网IP
      sudo iptables -A INPUT -s 公网IP -d 内网IP -j DROP
      

      3. 检查网络路由

      确保网络路由没有将公网IP的请求转发到内网IP。可以使用以下命令检查路由表:

      # 检查路由表
      route -n
      

      具体操作步骤

      1. 编辑Nginx配置文件

        打开Nginx配置文件(通常位于 /etc/nginx/nginx.conf/etc/nginx/sites-available/default),添加以下默认服务器块:

        server {
            listen 80 default_server;
            server_name _;
            return 444;  # 返回无响应状态码
        }
        
      2. 检查和配置防火墙

        使用以下命令检查和配置防火墙规则:

        sudo iptables -L -n
        sudo iptables -A INPUT -s 公网IP -d 内网IP -j DROP
        
      3. 检查网络路由

        使用以下命令检查路由表:

        route -n
        

      总结

      通过上述步骤,可以确保Nginx仅通过内网IP 192.168.1.103 提供服务,并阻止通过公网IP的访问。同时,检查和配置防火墙和网络路由,以确保系统的安全性。

      希望以上解决方案能帮助您解决问题。如果有任何疑问,请随时联系。

      如果该回答解决了您的问题,请采纳!如果没有,请私信联系或评论您的疑惑

      展开全部

      评论
    编辑
    预览

    报告相同问题?

  • 相关阅读:
    单调队列优化DP 上 day46
    关于Highcharts图表的用法总结
    Drive to APasS!使用明道云管理F1赛事
    <Linux复习>make/Makefile
    从二值 Mask 获取外接矩形坐标
    sas-import external data base
    http和https分别是什么?
    【opencv图像处理】-- 5.形态学(膨胀、腐蚀、开闭运算、顶帽、黑帽、二值化)
    动手学习深度学习
    背包问题及其拓展
  • 原文地址:https://ask.csdn.net/questions/8132977