Nginx虚拟机主机根据不同的域名使用不同的root路径
一 应用场景描述
应开发同事需求,需要在开发环境的Nginx能够根据不同的域名使用不同的root路径。
例如如果域名是game4.xxx.com,就使用root路径为/data/public/game4
game5.xxx.com,就使用root路径为/data/public/game5
game6.xxx.com,就是用root路径为/data/public/game6
二 解决方法
server
{listen 80;server_name *.xxx.com;set $game_name game4;if ($host ~ "game5"){set $game_name game5;}if ($host ~ "game6"){set $game_name game6;}root /data/public/$game_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;}}
这里设置变量$game_name,然后在root路径中使用这个变量
三 相关Nginx指令介绍
1.set指令
用于定义一个变量,并为变量赋值
作用范围为if,location,server
如以上的
set $game_name game4;
2.if指令
if(condition) {...}
作用范围为
如:
if ($host ~ "game-taiwan-5")
{
set $game_name game5;
}
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指令
参考文档:
http://serverfault.com/questions/241005/nginx-change-root-directory-based-on-server-name
转载于:https://blog.51cto.com/john88wang/1616538
Nginx虚拟机主机根据不同的域名使用不同的root路径相关推荐
- linux基于域名的虚拟主机,Nginx虚拟主机应用——基于域名、IP、端口的虚拟主机...
Nginx支持的虚拟主机有三种 ●基于域名的虚拟主机 ●基于IP的虚拟主机 ●基于端口的虚拟主机 每一种虚拟主机均可通过"server{}" 配置段实现各自的功能 基于域名的虚拟主 ...
- nginx虚拟主机(基于域名虚拟主机、基于IP地址虚拟主机、基于端口虚拟主机设置)
文章目录 Nginx支持的虚拟主机有三种 配置环境 配置DNS域名 安装环境 安装nginx 制作管理脚本 基于域名 基于端口 基于IP 基于用IP地址访问域名 Nginx支持的虚拟主机有三种 ●基于 ...
- web服务器 ---nginx 虚拟主机的创建(基于 域名 . 端口 . ip )以及nginx访问控制
文章目录 前言 一:Nginx服务基础(理论) 二:Nginx虚拟主机实验 2.1:Nginx虚拟主机应用 2.2 具体步骤,配置基于域名的虚拟主机 2.2.1 安装环境软件软件 2.2.2 编译安装 ...
- Java学习---nginx虚拟主机域名配置
一.nginx虚拟主机域名配置 1.1.创建好站点 1.2.在nginx的配置文件中设置 修改nginx.conf文件 worker_processes 1;events {worker_connec ...
- nginx虚拟主机和域名跳转
nginx介绍 nginx官网 :nginx.org nginx主要应用web服务.反向代理和负载均衡的作用上 nginx分支,淘宝基于nginx开发的Tengine,使用上和nginx一致,服务和配 ...
- nginx虚拟主机概念和类型介绍
nginx虚拟主机配置实战 1,虚拟主机概念和类型介绍 所谓虚拟主机,在web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可能是IP或端口),具有独立的程序及资源目录,可以独立地对外提供服 ...
- Nginx服务器、Nginx虚拟主机、Nginx反向代理
nginx安装[依赖包,./configure模块] nginx升级[make upgrade] nginx[默认welcome测试网站] nginx[用户认证] nginx [server{ }虚拟 ...
- 6. Nginx虚拟主机
文章目录 6. Nginx虚拟主机 6.1 nginx 单虚拟主机配置 6.1.1 静态网站的搭建 6.2 案例1:多网卡多IP配置虚拟主机 6.2.1 增加一块网卡 6.2.2 编辑配置文件,基于每 ...
- Nginx虚拟主机与域名解析
文章目录 一.域名.dns.ip地址之间的关系 二.浏览器.nginx与http协议 三.虚拟主机原理 四.域名解析与泛解析 1.公网ip解析 2.内网ip解析 五.域名解析相关企业项目实战技术架构 ...
最新文章
- 【RLChina2020】 强化学习夏令营课件(附pdf下载)
- view是怎么被展示在手机上的?
- chapter13 机器学习之利用PCA简化数据
- ustc小道消息20211225
- falcon框架_如何使用Falcon构建RESTful API
- 【转】嵌入式软件:C语言编码规范
- python与excel-用Python完成Excel的常用操作
- python random random_【python】random与numpy.random
- python中bif是什么_python类与对象(BIF详细分析及实例讲解)
- J-LINK烧录bin文件
- 苏州大学与东华大学计算机哪个好,选哪所大学好?东华大学和苏州大学对比
- 致远项目管理SPM系统案例:华仁药业股份有限公司合同管理
- Springer-Verlag免费下载图书400本
- 用Burpsuite破解网站密码
- 网络正常,浏览器显示代理服务器没有响应怎么办?
- onbeforeunload与onunload用法(转)
- 生信基础(三)——统计分析工具R语言
- Leetcode 999. Available Captures for Rook
- 用三个与非门设计或门两种方法
- 这些前端大厂面试题你会做吗?每日10题大厂面试题(七)
热门文章
- redmine升级了 ,6与18日同时发布2.0.3和1.4.4
- C#在WinFrom中Get/Post请求及QQ农场Cookie保存
- ObjectDataSource未能找到带参数的非泛型方法的解决
- Android开发——Android中常见的4种线程池(保证你能看懂并理解)
- 关于机器学习中的一些常用方法的补充
- Django error信息邮件通知功能配置部署
- FJ省队集训DAY4 T1
- ZIL (ZFS intent log) zil.c
- 并发异步处理队列 .NET 4.5+
- 基于单个xml的数据库