Nginx中server_name指令的參數(shù)詳解
server_name指令參數(shù)詳解
Nginx中的server_name指令主要用于配置基于名稱的虛擬主機,server_name指令在接到請求后的匹配順序分別為:
1、準(zhǔn)確的server_name匹配,例如:
server {
listen 80;
server_name domain.com www.domain.com;
...
}2、以*通配符開始的字符串:
server {
listen 80;
server_name *.domain.com; ...
}3、以*通配符結(jié)束的字符串:
server {
listen 80;
server_name www.*;
...
}4、匹配正則表達(dá)式:
server {
listen 80;
server_name ~^(?.+)\.domain\.com$; ...
}nginx將按照1,2,3,4的順序?qū)erver name進(jìn)行匹配,只有有一項匹配以后就會停止搜索,所以我們在使用這個指令的時候一定要分清楚它的匹配順序(類似于location指令)。
server_name指令一項很實用的功能便是可以在使用正則表達(dá)式的捕獲功能,這樣可以盡量精簡配置文件,畢竟太長的配置文件日常維護(hù)也很不方便。
下面是2個具體的應(yīng)用:
1、在一個server塊中配置多個站點:
server
{
listen 80;
server_name ~^(www\.)?(.+)$;
index index.php index.html;
root /data/wwwsite/$2;
}站點的主目錄應(yīng)該類似于這樣的結(jié)構(gòu):
/data/wwwsite/domain.com
/data/wwwsite/nginx.org
/data/wwwsite/baidu.com
/data/wwwsite/google.com
這樣就可以只使用一個server塊來完成多個站點的配置。
2、在一個server塊中為一個站點配置多個二級域名。
實際網(wǎng)站目錄結(jié)構(gòu)中我們通常會為站點的二級域名獨立創(chuàng)建一個目錄,同樣我們可以使用正則的捕獲來實現(xiàn)在一個server塊中配置多個二級域名:
server
{
listen 80;
server_name ~^(.+)?\.domain\.com$;
index index.html;
if ($host = domain.com){
rewrite ^ http://www.domain.com permanent;
}
root /data/wwwsite/domain.com/$1/;
}站點的目錄結(jié)構(gòu)應(yīng)該如下:
/data/wwwsite/domain.com/www/
/data/wwwsite/domain
.com/nginx/
這樣訪問www.domain.com時root目錄為/data/wwwsite/domain.com/www/,nginx.domain.com時為/data/wwwsite/domain.com/nginx/,以此類推。
后面if語句的作用是將domain.com的方位重定向到www.domain.com,這樣既解決了網(wǎng)站的主目錄訪問,又可以增加seo中對www.domain.com的域名權(quán)重。
server_name 同樣也可以使用 ip進(jìn)行匹配,以下是自己使用IP進(jìn)行配置單的:
upstream web_app {
server 127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=30s;
server 127.0.0.1:8081 weight=1 max_fails=2 fail_timeout=30s;
}
server{
listen 8093;
#server_name 127.0.0.1:8093;
server_name 192.168.47.128:8093
access_log logs/host.access.log main;
location /
{
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://web_app;
expires 3d;
}到此這篇關(guān)于Nginx中server_name指令的參數(shù)詳解的文章就介紹到這了,更多相關(guān)server_name指令的參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx使用反向代理實現(xiàn)負(fù)載均衡過程解析
這篇文章主要介紹了Nginx使用反向代理實現(xiàn)負(fù)載均衡過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-09-09
在CentOS?7上使用Nginx將www重定向到非www的完整步驟
本文介紹了如何在CentOS7上使用Nginx進(jìn)行域名重定向配置,以及設(shè)置相應(yīng)的DNS記錄,重定向不僅有助于提高網(wǎng)站的搜索引擎排名,還能確保用戶無論通過www還是非www域名訪問,都能獲得一致的網(wǎng)站體驗,需要的朋友可以參考下2024-11-11
Nginx下配置pathinfo及ThinkPHP的URL Rewrite模式支持
這篇文章主要介紹了Nginx下配置pathinfo及ThinkPHP的URL Rewrite模式支持,使用Nginx運行ThinkPHP的必備配置,需要的朋友可以參考下2015-07-07
Nginx Lua 根據(jù)參數(shù)請求轉(zhuǎn)發(fā)的實現(xiàn)
本文介紹了如何使用Nginx和Lua腳本實現(xiàn)基于參數(shù)的請求轉(zhuǎn)發(fā),文章詳細(xì)說明了配置方法,并提供了示例代碼,幫助讀者理解如何通過NginxLua模塊根據(jù)請求參數(shù)將流量轉(zhuǎn)發(fā)到不同后端服務(wù),這種方法有助于實現(xiàn)靈活的負(fù)載均衡和動態(tài)內(nèi)容處理2022-05-05
Nginx?504?Gateway?Time-out的兩種最新解決方案
大家在訪問網(wǎng)站的時候通常會遇到502錯誤、404錯誤等,很少會遇到504錯誤,但是在我們?nèi)ピL問大流量或者內(nèi)容數(shù)據(jù)量較多的網(wǎng)站時,打開網(wǎng)頁偶爾就會出現(xiàn)504 gateway time-out,這篇文章主要給大家介紹了關(guān)于Nginx?504?Gateway?Time-out的兩種解決方案,需要的朋友可以參考下2022-08-08

