理所应当 發表於 2020-5-19 11:33:00

Nginx域名绑定

<h1 id="nginx实现域名绑定">Nginx实现域名绑定</h1>
<ol start="0">
<li>
<p>生产环境利用nginx对后端服务器进行反向代理和负载均衡,再把外网域名解析到nginx的vip地址,这样在外网可以通过域名访问WEB服务。但是如果不对域名进行绑定的话,用户可通过ping域名获取服务器IP地址,再通过IP地址直接访问到WEB服务。这不符合国家的政策法规。本文介绍如何利用Nginx实现域名绑定,禁止用户直接通过IP地址直接访问WEB服务。</p>
</li>
<li>
<p>利用nginx的default_server可以很容易地实现该域名绑定,配置如下:</p>
</li>
</ol>
<pre><code class="language-nginx"># 配置default_server
server {
    listen 1.1.1.1:80 default_server;
    server_name _;
    return 403;
}

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

    location / {
            proxy_pass http://x.x.x.x:80;
    }
}
</code></pre>
<ol start="2">
<li>
<p>上述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拒绝服务状态码。</p>
</li>
<li>
<p>上述配置中,不是通过mydomain.com访问nginx, 会直接返回403拒绝服务状态码, 返回页面为nginx默认的403错误页面,如下图所示:<br>
<img src="https://upload-images.jianshu.io/upload_images/2476507-ddb5f7bdd5d937d6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1200/format/webp"></p>
</li>
<li>
<p>如果需要自定义403页面,可以把default server配置成一个静态的server, 请求匹配到该server时直接返回一个自定义的403页面,nginx配置如下所示:</p>
</li>
</ol>
<pre><code class="language-nginx">server {
    listen 10.0.0.25:5601 default_server;
    server_name _;
    index 403.html;
}

server {
    listen       1.1.1.1:80;
    server_namemydomain.com;

    location / {
            proxy_pass http://x.x.x.x:80;
    }
}
</code></pre>
<p>这样不通过mydomain.com访问nginx,就可以返回自定义的403错误页面了。</p>


</div>
<div id="MySignature" role="contentinfo">
    学习使我充实,分享给我快乐!<br><br>
来源:https://www.cnblogs.com/JaxYoun/p/12915960.html
頁: [1]
查看完整版本: Nginx域名绑定