vps交流

[疑问] Lnmp Nginx下怎么禁止IP直接访问网站?


本帖最后由 唐王李世民 于 2024-7-10 16:26 编辑

  求教一个问题,在Lnmp下,Nginx怎么设置禁止IP访问呢?谢谢大佬们了。

1、已经设置了 /usr/local/nginx/conf/nginx.conf 加上了一行

server {
listen 80 default_server;
server_name _;
return 444; #加上了这一行
}

现在是http下有效果了,已经不能使用IP直接访问网站了。但是https还照样没有效果,哪果加上 listen 443; 这一行,https打开网站就打开不了。

2、服务器上有几个网站,分别都开了http和https,现在应该怎么设置呢?

问题解决了,谢谢各位回复的大佬们了,感谢!在 /usr/local/nginx/conf/nginx.conf 中那个80的server段上边加这一段就可以了。

  1. server
  2.    {
  3.        listen 443 default_server;
  4.        server_name _;
  5.        return 444;
  6.        ssl_reject_handshake on;
  7.    }

复制代码

专门给ip也开个server不就行了,域名走域名的,ip走ip的[疑问]  Lnmp Nginx下怎么禁止IP直接访问网站?
自签一个证书  然后 跟 http 一样 但是注意配置上证书,  这样访问 IP 就不暴漏 域名了。
把这个server删掉不行吗。

Crownsecular 发表于 2024-7-10 15:34
专门给ip也开个server不就行了,域名走域名的,ip走ip的

lnmp下怎么操作呢?
谢谢您了

https这样写
server
   {
       listen 443 default_server;
       listen [::]:443;
       server_name _;
       ssl_reject_handshake on;
   }
在LNMP(Linux, Nginx, MySQL, PHP)环境下,禁止通过IP地址访问网站可以通过Nginx配置来实现。以下是具体的步骤:

找到并编辑Nginx的配置文件:
通常,Nginx的配置文件位于 /etc/nginx/nginx.conf 或者 /etc/nginx/conf.d/ 目录下。你需要找到你的网站对应的配置文件。

添加禁止IP访问的规则:
在你的网站server块中,添加一个新的server块,用于匹配通过IP地址的访问请求,并返回403 Forbidden状态码。具体配置如下:

nginx
Copy code
server {
    listen 80;
    server_name 你的服务器IP地址;

    return 403;
}
然后在你现有的server块中配置正常的域名访问:

nginx
Copy code
server {
    listen 80;
    server_name yourdomain.com;

    # 其他配置
    root /path/to/your/website;
    index index.php index.html index.htm;
   
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;  # 视具体PHP版本而定
    }

    # 其他配置
}
重启Nginx服务:
保存配置文件后,检查配置文件是否有语法错误并重启Nginx服务:

sh
Copy code
sudo nginx -t
sudo systemctl restart nginx
通过上述配置,当用户尝试通过IP地址访问你的服务器时,将会被返回403 Forbidden错误,而通过域名访问则正常处理。

注意:

将 你的服务器IP地址 替换为你实际的服务器IP地址。
如果你有多个域名或多站点,需要在对应的server块中进行相应的配置。

闪电五连鞭 发表于 2024-7-10 15:42
https这样写
server
   {

这个加在哪里呢?/usr/local/nginx/conf/nginx.conf 这个文件里吗?

心外无物 发表于 2024-7-10 15:47
在LNMP(Linux, Nginx, MySQL, PHP)环境下,禁止通过IP地址访问网站可以通过Nginx配置来实现。以下是具体 …

我的配置除了 /usr/local/nginx/conf/nginx.conf 这个配置文件外
/usr/local/nginx/conf/vhost 这个目录下有一些我域名的conf文件
您的这个要加在哪里呢?

nginx.conf

server
        {
                listen 80 default_server;
                server_name "";
                return 444;
        }

server
        {
                listen 443 ssl default_server;
                ssl_reject_handshake on;
        }