一 應(yīng)用場景描述
應(yīng)開發(fā)同事需求,需要在開發(fā)環(huán)境的Nginx能夠根據(jù)不同的域名使用不同的root路徑。
例如如果域名是linuxidc4.linuxidc.com,就使用root路徑為/data/public/linuxidc4
linuxidc5.linuxidc.com,就使用root路徑為/data/public/linuxidc5
linuxidc6.linuxidc.com,就是用root路徑為/data/public/linuxidc6
二 解決方法
server
{
listen 80;
server_name *.linuxidc.com;
set $linuxidc_name linuxidc4;
if ($host ~ "linuxidc5")
{
set $linuxidc_name linuxidc5;
}
if ($host ~ "linuxidc6")
{
set $linuxidc_name linuxidc6;
}
root /data/public/$linuxidc_name/;
client_max_body_size 5m;
autoindex off;
location / {
if (!-e $request_filename){
rewrite /(.*) /index.php last;
}
index index.php;
autoindex off;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
}
這里設(shè)置變量$linuxidc_name,然后在root路徑中使用這個(gè)變量
三 相關(guān)Nginx指令介紹
1.set指令
用于定義一個(gè)變量,并為變量賦值
作用范圍為if,location,server
如以上的
set $linuxidc_name linuxidc4;
2.if指令
if(condition) {...}
作用范圍為
如:
if ($host ~ "linuxidc-taiwan-5")
{
set $linuxidc_name linuxidc5;
}
if指令用于檢查一個(gè)條件是否符合,如果條件符合,則執(zhí)行大括號(hào)內(nèi)的內(nèi)容。if指令不支持嵌套,不支持多個(gè)&&或||
可以指定的條件為:
1)變量名
2)變量比較可以使用 =(等于)和!=(不等于)
3)正則表達(dá)式匹配可以使用 ~(區(qū)分大小寫匹配)和 ~* (不區(qū)分大小寫匹配)
!~ 和 !~* 則表示不匹配
4)-f和!-f 用來判斷文件是否存在
5) -d和!-d 用來判斷目錄是否存在
6) -e和!-e 用來判斷文件或目錄是否存在
7)-x和!-x 用來判斷文件是否可以執(zhí)行
3)Nginx內(nèi)置變量
$host 請(qǐng)求的主機(jī)名
$request_filename 請(qǐng)求的文件名
4)rewrite指令
rewrite regex replacement flag;
用來重定向URL
if (!-e $request_filename){
rewrite /(.*) /index.php last;
}
rewrite最后一項(xiàng)為標(biāo)記位,Nginx支持的標(biāo)記為有:
last 表示完成rewrite
permanent 返回301永久重定向,瀏覽器地址欄會(huì)顯示跳轉(zhuǎn)后的URL
break 本條規(guī)則匹配完成后,終止其他規(guī)則的匹配
redirect 返回302臨時(shí)重定向
last和break完成URL的重定向,瀏覽器上的地址不會(huì)變,但在服務(wù)器端上的位置發(fā)生了變化。permanent和redirect用來實(shí)現(xiàn)URL跳轉(zhuǎn),瀏覽器地址欄會(huì)顯示跳轉(zhuǎn)后的URL。
使用alias指令時(shí)必須使用last指令,使用proxy_pass指令時(shí)必須使用break指令
--------------------------------------分割線 --------------------------------------
CentOS 6.2實(shí)戰(zhàn)部署Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm
使用Nginx搭建WEB服務(wù)器 http://www.linuxidc.com/Linux/2013-09/89768.htm
搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服務(wù)器全過程 http://www.linuxidc.com/Linux/2013-09/89692.htm
CentOS 6.3下Nginx性能調(diào)優(yōu) http://www.linuxidc.com/Linux/2013-09/89656.htm
CentOS 6.3下配置Nginx加載ngx_pagespeed模塊 http://www.linuxidc.com/Linux/2013-09/89657.htm
CentOS 6.4安裝配置Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm
Nginx安裝配置使用詳細(xì)筆記 http://www.linuxidc.com/Linux/2014-07/104499.htm
Nginx日志過濾 使用ngx_log_if不記錄特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm
Nginx 的詳細(xì)介紹:請(qǐng)點(diǎn)這里
Nginx 的下載地址:請(qǐng)點(diǎn)這里
本文永久更新鏈接地址:http://www.linuxidc.com/Linux/2015-03/114982.htm
聯(lián)系客服