Nginx配置:阻止[IPaddress:8080]访问,仅允许域名访问应用
解决方法
方案一:修改应用监听地址(最彻底)
直接让你的应用仅监听本地回环地址127.0.0.1:8080,而非0.0.0.0:8080。这样外部请求无法通过公网IP:8080直接访问应用,只能走Nginx代理的域名路径。
不同应用修改方式举例:
- Java应用:启动参数添加
--server.address=127.0.0.1 --server.port=8080 - Node.js应用:监听代码改为
app.listen(8080, '127.0.0.1') - Python Flask应用:启动时使用
app.run(host='127.0.0.1', port=8080)
方案二:通过Nginx拦截IP访问(适配无法修改应用配置的场景)
如果无法调整应用监听地址,可新增Nginx配置拦截8080端口的非域名请求:
# 保留原有80端口代理配置 server { listen 80; server_name desh.onecloudhelper.com; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } # 新增8080端口拦截规则 server { listen 8080; server_name _; # 匹配所有Host请求 # 默认拦截所有请求,返回403禁止访问 location / { return 403; } # 仅允许指定域名的请求正常代理 if ($host = desh.onecloudhelper.com) { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
配置完成后,执行命令重启Nginx生效:
nginx -s reload
注意:需确保Nginx有权限监听8080端口,且服务器防火墙开放8080端口给合法请求。
内容的提问来源于stack exchange,提问作者Desh Deepak Dhobi
相关产品推荐
相关产品推荐

