1. 程式人生 > >Nginx禁止其他域名訪問

Nginx禁止其他域名訪問

我的伺服器使用Nginx搭建, 現在有一個場景如下:

A.com的A記錄指向a.b.c.d
B.com的A記錄指向a.b.c.d
我的Nginx設定
listen a.b.c.d:80 default;
server_name A.com;
目前訪問B.com時也會預設開啟我的站點, 並且站內資源也可正確被引用.

請問如何配置能夠讓B.com及其他域名無法訪問?

我瞭解如果加入一條判斷if{}可以把其他域名返回錯誤程式碼, 但如果有多個vhost, 配置起來會比較麻煩. 有沒有更優雅, 通用的方式?

=========================解決辦法分割線==========================

可以在Nginx上設定禁止通過IP訪問伺服器,只能通過繫結域名訪問(同時設定未繫結域名返回500錯誤或者跳轉到我滴域名首頁)
方法比較簡單,
開啟nginx.conf

step1 繫結網站域名
在server段server_name行 新增域名

server {
        listen 80;
        server_name qaplus.cn www.qaplus.cn;
        index index.html index.htm index.php;
        root /data/htdocs/www;
}
step2 設定禁止IP及未繫結域名訪問
加入以下程式碼到配置檔案中(整段)

①返回500錯誤
server {
        listen 80 default;
        server_name _;
        return 500;
}
②跳轉到自己域名首頁
server {
        listen 80 default;
        server_name _;
        rewrite ^(.*) http://www.qaplus.cn permanent;
}
step3 重啟nginx
這樣,未在nginx內繫結的域名及ip訪問時將返回500錯誤或者跳轉到本人域名首頁.