杰克工作室 发表于 2024-2-15 11:06

nginx如何限制只允许内网访问

<p>使用&nbsp;status.example.com&nbsp;解析到 123.123.666.666 (公网 ip) 后添加如下配置</p>

<h3>nginx conf</h3>

<pre>
server {
    listen 80;
    server_name status.example.com;
    charset utf-8;
    location / {
      proxy_pass http://192.168.1.167:3001;
          proxy_set_header   X-Real-IP $remote_addr;
                proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header   Host $host;
                proxy_set_header   X-Forwarded-Host $host;
                proxy_http_version 1.1;
                proxy_set_header   Upgrade $http_upgrade;
          proxy_set_header   Connection &quot;upgrade&quot;;
    }
       

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
      root /usr/share/nginx/html;
    }
}
</pre>

<p>现在想要&nbsp;限制只允许同内网的机器访问&nbsp;,尝试过添加</p>

<pre>
# 优先允许内网中的特定 IP 地址
allow 192.168.0.199; # 或者你想要允许的内网 IP 地址
# 接着允许特定网段的 IP 范围访问
allow 192.168.0.0/23;
# 最后拒绝所有其他 IP 地址
deny all;
</pre>

<p>但是测试发现要么都是允许要么都是 403</p>

<p>网络路径是&nbsp;status.example.com&nbsp;&gt; 123.123.666.666 &gt; 深信服 &gt; 内网机器(nginx)<br />
<br />
源文地址:https://www.v2ex.com/t/999454</p>

杰克工作室 发表于 2024-2-15 11:07

各位 ,问题出在防火墙上,外部流量进来的时候被 192.168.0.1 给代理了,导致在应用侧收到的访问 ip 都是 192.168.0.1<br />
```<br />
location /ip {<br />
default_type text/plain;<br />
return 200 $remote_addr;<br />
}<br />
```<br />
<br />
<br />
让网关同事联系了深信服,处理方案类似于<br />
<br />
<a href="https://bbs.sangfor.com.cn/forum.php?mod=viewthread&amp;tid=10516" rel="nofollow noopener" target="_blank">https://bbs.sangfor.com.cn/forum.php?mod=viewthread&amp;tid=10516</a><br />
&nbsp;
页: [1]
查看完整版本: nginx如何限制只允许内网访问