Nginx 多域名多网站绑定及禁止IP访问

lnmp 服务器架设好,配置nginx,实现多个网站分别绑定各个域名

这里以域名:www.mysite.com为例

1.在/usr/local/nginx/conf/vhost文件夹中创建mysite.conf文件

2.在其中写入如下内容并保存:

server {
        listen 80;	                # 网站的端口一般为 80,可以与其他网站一起使用该端口
        server_name  www.mysite.com;	# 要绑定的域名(或子域名)
        root /home/www/mysite;		# 该网站的根目录
        location / {			# 不用管
        }
}

3.nginx -s reload 重启服务即可生效。

那如何禁止用户通过IP地址直接访问WEB服务.

利用nginx的default_server可以很容易地实现该功能:

 server {
        listen 80 default_server;
        server_name _;
        return 403;
    }

    server {
        listen 80;
        server_name  mydomain.com;

        location / {
        }
    }

上述nginx配置中有两个server都监听了80端口,第一个server设置为default_server, server_name为任意域名;第二个server域名设置为mydomain.com. 当http请求到达nginx时,如果是通过mydomain.com访问的(header中Host字段为mydomain.com),则该请求会匹配到第二个server, 由该server进行处理,否则由第一个default server进行处理,default server直接返回403禁止访问状态码。

上述配置中,不是通过mydomain.com访问nginx, 会直接返回403的状态码, 返回页面为nginx默认的403错误页面。

如果需要替换这个默认的静态的403页面,可以把default server配置成一个静态的server, 请求匹配到该server时直接返回一个自定义的403页面,nginx配置如下所示:

server {
            listen 80 default_server;
            server_name _;
            index 403.html;
     }
     server {
        listen 80;
        server_name  mydomain.com;

        location / {
        }
     }

或

server {
    listen 80;
    server_name  www.mydomain.com;
    if ($host != 'www.mydomain.com'){
    return 403;
}

这样不通过mydomain.com访问nginx,就可以返回自定义的403错误页面了。

发布了114 篇原创文章 · 获赞 48 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/jamesdodo/article/details/105046766
今日推荐