伙计们,这真是太有趣了!我在我的一个 Web 应用程序 NginX 配置中有以下代码:
location /login {
#access_log off;
proxy_pass https://public;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-SSL-Client-Verify $ssl_client_verify;
proxy_set_header X-Client-S-DN $ssl_client_s_dn;
allow 10.0.0.31;
deny all;
}
如您所见,我希望拒绝除一个 IP 地址之外的所有登录界面连接。这很管用,当我尝试从另一个 IP 连接时,会显示标准的 NginX 403 错误消息。现在到了关键时刻。如果我添加自定义错误消息行,整个允许/拒绝选项将被忽略!
我补充道:
error_page 403 /40x.html;
OFC 我创建了一个自定义文件,/usr/shar/nginx/html
并且该文件存在。NginX 中没有错误消息,但如果我将上面的一行添加到 webapplication 配置(或添加到标准 nginx.conf,无所谓),我为允许的 IP 设置的规则将deny all
被完全忽略。怎么回事?有人知道如何为用户提供自定义 NginX 错误页面并保留允许和拒绝选项吗?
答案1
好的,解决方案是不仅要创建自定义错误页面选项,还要创建错误页面位置。所以我只需添加:
error_page 403 /40x.html;
location = /40x.html {
root /usr/share/nginx/html;
allow all;
}
瞧...该死的 NginX!你为什么让我失望这么多次?:D