【发布时间】:2018-04-24 13:25:36
【问题描述】:
请在我的站点域名下的 /etc/nginx/sites-enabled 中找到以下设置。 (mysite.lk)
server {
listen 80;
server_name mysite.lk www.mysite.lk;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass "http://127.0.0.1:8080";
}
}
应用程序在端口 8080 上运行,在这里我将所有 80 流量重定向到 8080。 我的网站只使用 mysite.lk 和 www.mysite.lk 域名。
因此,我想限制/阻止所有其他域(mysite.lk 和 www.mysite.lk 除外),这些域将访问此服务器 IP。为了实现这一目标,我需要做哪些改变?
我尝试了很多东西,例如 Why is nginx responding to any domain name?,但在 nginx 启动时出错。
请帮帮我! 谢谢。
更新
找到答案。在给定配置之前的配置顶部应该需要一个包罗万象的服务器块,如下所示。代码块应该是这样的。
server {
return 403;
}
server {
listen 80;
server_name mysite.lk www.mysite.lk;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass "http://127.0.0.1:8080";
}
}
【问题讨论】:
-
你需要一个 catch-all 服务器。您的链接答案显示了解决方案。如果您在实施中遇到错误 - 您需要修复它们。从
/etc/nginx/nginx.conf文件开始。您的系统中是否已经定义了任何其他server块 - 使用nginx -T查看完整图片。 -
非常感谢!这是服务器块中的错误。还在给定块限制所有其他域之前添加包罗万象的块“server { return 403; }”。
-
它适用于端口 80 但不适用于 443。任何想法为什么?
-
是的,它适用于端口 80 但不适用于 443,为什么??
-
@Kornikopic 你找到解决方法了吗?
标签: nginx