Nginx域名绑定

Posted JaxYoun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx域名绑定相关的知识,希望对你有一定的参考价值。

nginx实现域名绑定

  1. 生产环境利用nginx对后端服务器进行反向代理和负载均衡,再把外网域名解析到nginx的vip地址,这样在外网可以通过域名访问WEB服务。但是如果不对域名进行绑定的话,用户可通过ping域名获取服务器IP地址,再通过IP地址直接访问到WEB服务。这不符合国家的政策法规。本文介绍如何利用Nginx实现域名绑定,禁止用户直接通过IP地址直接访问WEB服务。

  2. 利用nginx的default_server可以很容易地实现该域名绑定,配置如下:

# 配置default_server
server {
    listen 1.1.1.1:80 default_server;
    server_name _;
    return 403;
}

# 配置真实服务器反向代理
server {
    listen       1.1.1.1:80;
    server_name  mydomain.com;

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

  2. 上述配置中,不是通过mydomain.com访问nginx, 会直接返回403拒绝服务状态码, 返回页面为nginx默认的403错误页面,如下图所示:
    技术图片

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

server {
    listen 10.0.0.25:5601 default_server;
    server_name _;
    index 403.html;
}

server {
    listen       1.1.1.1:80;
    server_name  mydomain.com;

    location / {
    	proxy_pass http://x.x.x.x:80;
    }
}

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

以上是关于Nginx域名绑定的主要内容,如果未能解决你的问题,请参考以下文章

nginx服务器绑定域名和设置根目录的方法

nginx 域名绑定 域名, nginx 域名绑定 端口

nginx 域名绑定 域名, nginx 域名绑定 端口

nginx 域名绑定 域名, nginx 域名绑定 端口

nginx 域名绑定 域名, nginx 域名绑定 端口

nginx 域名绑定 域名, nginx 域名绑定 端口