共计 2538 个字符,预计需要花费 7 分钟才能阅读完成。
一 应用场景描述
应开发同事需求,需要在开发环境的 Nginx 能够根据不同的域名使用不同的 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;
}
}
这里设置变量 $linuxidc_name, 然后在 root 路径中使用这个变量
三 相关 Nginx 指令介绍
1.set 指令
用于定义一个变量,并为变量赋值
作用范围为 if,location,server
如以上的
set $linuxidc_name linuxidc4;
2.if 指令
if(condition) {…}
作用范围为
如:
if ($host ~ “linuxidc-taiwan-5”)
{
set $linuxidc_name linuxidc5;
}
if 指令用于检查一个条件是否符合,如果条件符合,则执行大括号内的内容。if 指令不支持嵌套,不支持多个 && 或 ||
可以指定的条件为:
1)变量名
2)变量比较可以使用 =(等于)和!=(不等于)
3)正则表达式匹配可以使用 ~(区分大小写匹配)和 ~*(不区分大小写匹配)
!~ 和 !~* 则表示不匹配
4)- f 和!-f 用来判断文件是否存在
5) - d 和!-d 用来判断目录是否存在
6) - e 和!-e 用来判断文件或目录是否存在
7)- x 和!-x 用来判断文件是否可以执行
3)Nginx 内置变量
$host 请求的主机名
$request_filename 请求的文件名
4)rewrite 指令
rewrite regex replacement flag;
用来重定向 URL
if (!-e $request_filename){
rewrite /(.*) /index.php last;
}
rewrite 最后一项为标记位,Nginx 支持的标记为有:
last 表示完成 rewrite
permanent 返回 301 永久重定向,浏览器地址栏会显示跳转后的 URL
break 本条规则匹配完成后,终止其他规则的匹配
redirect 返回 302 临时重定向
last 和 break 完成 URL 的重定向,浏览器上的地址不会变,但在服务器端上的位置发生了变化。permanent 和 redirect 用来实现 URL 跳转,浏览器地址栏会显示跳转后的 URL。
使用 alias 指令时必须使用 last 指令,使用 proxy_pass 指令时必须使用 break 指令
————————————– 分割线 ————————————–
CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm
使用 Nginx 搭建 WEB 服务器 http://www.linuxidc.com/Linux/2013-09/89768.htm
搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm
CentOS 6.3 下 Nginx 性能调优 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 安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm
Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm
Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-03/114982.htm