请在我的网站域名下的**/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启动时出现了错误。
帮帮忙!谢谢。
更新
找到了答案。在配置的顶部,在给定的配置之前,应该需要一个catch-all服务器块,如下所示。代码块应该是这样的。
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";
}
}
型
5条答案
按热度按时间cyej8jka1#
Nginx中定义的第一个服务器被视为
default_server
,因此只需添加一个作为默认值并返回412(先决条件失败)或任何其他最适合您要求的状态,将有助于后续服务器遵守server_name
字符串
li9yvcax2#
以上所有的答案都是正确的。但是如果另一个域试图通过端口443(https/SSL)访问您的主机,它们都不起作用。
要阻止对https请求的访问,只需在主机的https服务器配置中添加一个if块。
字符串
iecba09b3#
创建一个没有server_name的server指令怎么样
字符串
编辑请阅读http://nginx.org/en/docs/http/request_processing.html简而言之,nginx总是在服务器名称或位置方面寻找最佳匹配,如果找不到,则使用默认服务器。
wlzqhblo4#
我有一个带有防火墙的播放器脚本,它阻止了不在我白名单上的网站,但事实证明,如果我激活了防火墙,视频就会停止在我的Android应用程序中工作,他们知道我如何修改我的防火墙以使用软件包名称Android应用程序将我的应用程序添加到白色列表中,并能够在防火墙处于活动状态的情况下播放应用程序中的视频,因为我必须将其禁用,可以播放我应用程序中的视频。
字符串
nhaq1z215#
我在站点的虚拟主机文件中实现了以下行:
字符串
对我很有效。