我有一个用于多个域的 nginx 反向代理,我想限制对其中一个域的访问,除非连接到 VPN。因此,我为这台特定的服务器添加了允许 VPN IP 地址的功能,并且无论我是否连接到 VPN,它都会拒绝访问。
如果有帮助的话,它是一台带有 fasthosts 的裸机服务器,并使用我的帐户提供的 vpn,以下是配置(它在 docker 容器内运行,该容器将流量通过专用网络转发到运行 docker swarm 的其他服务器)。我已经用 X 替换了 vpn ip 地址:
server {
listen 80;
listen 443 ssl;
allow xx.x.xxx.xxx;
allow xx.x.xxx.xxx;
deny all;
ssl_certificate /usr/local/etc/ssl/certs/live/example.com/fullchain.pem;
ssl_certificate_key /usr/local/etc/ssl/certs/live/example.com/privkey.pem;
ssl_session_timeout 10m;
ssl_verify_client off;
server_name admin.example.com;
error_log /usr/share/nginx/logs/error-admin.log;
access_log /usr/share/nginx/logs/access-admin.log;
client_max_body_size 1024M;
gzip_http_version 1.0;
gzip on;
gzip_proxied any;
gzip_types
image/jpeg
image/jpg
image/png
image/gif
image/bmp
video/mp4
application/octet-stream;
location / {
proxy_read_timeout 1800;
proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_next_upstream error timeout http_502;
proxy_next_upstream_tries 10;
proxy_pass http://admin;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_ssl_session_reuse on;
proxy_http_version 1.1;
proxy_set_header X-XSS-Protection 1;
proxy_set_header X-Content-Type-Options nosniff;
proxy_set_header Referrer-Policy origin;
proxy_set_header X-Frame-Options DENY;
proxy_set_header Host admin.gofollow.vip;
proxy_request_buffering off;
}
}
更新
看来 docker 中的 nginx 没有看到正确的客户端 ip 地址