Nginx下的域名跳转配置及禁止IP访问

VPS

需求 LIST

1、主站域名://www.youfencun.com;
2、http://www.youfencun.com,跳转至主站域名;
3、http(s)://youfencun.com,跳转至主站域名,同时禁止搜索引擎索引此域名。
4、http(s)://ip,返回 501,禁止访问;

实现配置

1、主站域名正常配置即可:

listen 443 ssl http2;
     server_name www.youfencun.com;
     index index.html index.htm index.php default.html default.htm default.php;
     root  /var/www/html;

2、这应该是最容易想到的方法,将所有的 http 请求通过 rewrite 重写到 https 上即可:

server
    {
        listen 80;
        server_name www.youfencun.com;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /var/www/html;

        return 301 //www.youfencun.com$request_uri;
    }

其中return 301 //www.youfencun.com;也可更换为rewrite ^(.*)$ //$host$1 permanent;
3、使用 html 刷新网页的方法:
我们用 curl 访问 baidu.com 试一下,看百度的公司是如何实现 baidu.com 向 www.baidu.com 的跳转
Nginx下的域名跳转配置及禁止IP访问
可以看到百度很巧妙的利用 meta 的刷新作用,将 baidu.com 跳转到 www.baidu.com.因此我们可以基于 http(s)://youfencun.com 的虚拟主机路径下也写一个 https.html,实现 404 跳转。
https.html 配置

<html>
<meta http-equiv="refresh" content="0;url=//www.youfencun.com/">
</html>

Nginx 配置

server
    {
       listen 80;
       listen 443 ssl http2;
       server_name youfencun.com;
       root  /var/www/html;
       #设置默认主面为 https.html
       index https.html;

       error_page 404 //www.youfencun.com;
    }

同时,根目录下增加 wrobots.txt 文件,禁止搜索引擎收录此域名,将以下代码增加至上述的 server 中去:

location ~ (robots.txt)
        {
        rewrite /robots.txt /wrobots.txt last;
        }

4、关闭 IP 访问
淘宝的 IP 访问即返回 501,同样的也按此操作。

server
    {
        listen 80 default_server;
        #listen [::]:80 default_server ipv6only=on;
        server_name _;
        index index.html index.htm index.php;
        root  /home/wwwroot/default;
        return 501;
    }

因为 //ip 的方式如果不加证书的话,不会返回 501,只好再增加一个 server 并且为其随便加一个证书。

server
    {
        listen 443 ssl http2 default_server;
        #listen [::]:443 default_server;
        server_name _;
        index index.html index.htm index.php;
        root  /home/wwwroot/default;
        return 501;
        ssl on;
        ssl_certificate /usr/local/nginx/conf/ssl/443.crt;
        ssl_certificate_key /usr/local/nginx/conf/ssl/443.key;
    }

至此,全部需要 LIST 已经完成。

© 声明:本站原创文章采用BY-NC-SA创作共用协议,转载时请标明本文地址;非原创(转载)文章版权归原作者所有。

RECENT POSTS

Stay Hungry. Stay Foolish.

数据库查询次数:11次,页面生成时间:0.030秒。