摘要
本文介紹了利用nginx實現多域名和多站點的綁定的方法及相關注意事項。您也可以只看標題或紅色標注部分。☺
1、應用場景
我們經常會遇到在同一臺服務器建立多個Web站點的情況,普遍的做法是為不同的站點配置不同的端口,這樣就可以用IP:Port的形式訪問。
但是用IP訪問畢竟不方便,不生動,不容易記憶。那么,我們可以給每個站點綁定不同的域名。(在這里我們僅談公網情況)即使我們只有一個域名,我們可以設置多個二級域名,使用Nginx很容易實現。
2、基本要求
通常,網上教程會直接貼一段配置文件的代碼,告訴我們如此這般就Ok了。但我發現很多新手看著教程配置,并不能像博主那樣就Success了,所以接下來我們談一下基本原理。
首先,要有一個自己能管理的域名,比如我有一個 postmsg.cn 的域名,就可以生出多個子域名,二世三世千萬世……
其次,有一臺能訪問的公網服務器,可以在這臺服務器上建立自己的Web站點,一個兩個三四個,對應端口不一。
然后,就是域名和站點的綁定,一個蘿卜一個坑,當然也可以多個蘿卜一個坑……
3、一般配置
需要配置的地方有兩個,我們先談首要先決條件,也是有些新手容易忽略的地方。
(1)域名配置
把域名的A記錄解析指向我們的公網服務器,這一點一般人都能想到。解析的時候只能加IP,是不能帶端口號的,即只能使用默認的80端口。(不討論域名轉發)
若想實現子域名綁定,在域名解析的時候必須配置合理。否則只靠Nginx是不行的。
例如我要把子域名 p.postmsg.cn 綁定到 服務器的 8001端口,我首先要保證訪問 p.postmsg.cn 的請求能到達該服務器,然后Nginx才能處理。
此時,要么在域名A記錄解析里加一條 p 的主機記錄,要么主機記錄里有通配符 * 的配置(*.postmsg.cn的訪問全部解析到對應的服務器,慎用),只設置@和www肯定是不行的。
圖1 - 域名解析示例
?。?)主機配置
域名的請求到達主機之后,一切才可以交給Nginx來處理。
修改Nginx配置的時候,可以直接在默認配置文件(例如/etc/nginx/nginx.conf,如以下代碼片段所示)里修改,也可以在某個目錄下新建獨立的配置文件,然后 include 這個目錄下的配置文件(如第17行所示)。
http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; include /etc/nginx/conf.d/*.conf;}
新聞熱點
疑難解答