出现这个错误是因为在 Nginx 中,命名位置(named location)只能在 server
块的上下文中定义,而你可能把它放置在了不正确的位置。要解决这个问题,可以将 @error404
定义移到 server
块内。
以下是修正后的配置示例:
http {
...
server {
listen 8888; # 设置监听端口
resolver 8.8.8.8; # 使用 Google 的公共 DNS
location / {
proxy_pass http://$http_host$request_uri;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 可选: 添加一些安全设置
proxy_intercept_errors on;
error_page 404 = @error404; # 当发生404错误时重定向到命名位置
}
location @error404 {
return 403; # 返回403禁止访问
}
}
...
}
修改说明:
- 确保
location @error404 {}
在同一个server {}
块内。 - 保持其他部分配置不变。
测试和重新加载
修改完成后,使用以下命令测试 Nginx 配置:
nginx -t
如果没有问题,重新加载 Nginx:
nginx -s reload
这样就可以正确地使用命名位置进行处理。如果还有其他问题,请告诉我!
内容由零声教学AI助手提供,问题来源于学员提问