nginx分区域名转发 tp5域名分目录配置
需求
本来我们一般情况下都是域名abc.com解析到网站的根目录/root/public这种。但是客户突然提出了一个奇葩的需求,客户要求以后可能网站会增多,需要增加分区的功能,比如abc.com/wh/代表武汉的网站,abc.com/sy/代表沈阳的网站,如果打开域名会自动跳到某一个分区网站。
过程
1.路由转发
因为我用的框架是thinkphp5.0,有一个定义路由的功能,可以以路由的形式改变url然后达到转发的效果。但是因为网站整个搬过去的时候已经完工了,这个时候修改路由会导致整个网站所有的url发生变更,工作量很大。没有一个工程师愿意接这个活,所以只能想到服务器转发,于是开始探索服务器转发这个路子。
2.nginx重定向
然后想到了用nginx重定向的功能rewrite将请求到根目录的请求全部转发到分区/wh/中去,然后匹配/wh/的分区location,进行解析这个网站。但是很不幸,因为定义了根目录的原因,thinkphp5直接将/wh/解析成了一个模块,然后就会报错找不到wh这个模块,资源加载也会自动j加上/wh/会导致所有资源加载不出来。其实是因为请求转发的时候解析有问题导致thinkphp5.0将/wh/解析成模块了
后来在百度之后吸取了教训,修改之后如下
终于能正常转发域名到分区域名下,并且thinkphp5.0也能正常解析,但是资源因为加了/wh/的原因不能正常加载了,如下图
一片红字,所有的资源被转发只有无法正常解析
3.nginx重定向+资源重定向
因为网页已经能正常解析了,加班两天的情况下不舍得放弃这个成果。于是研究这些静态资源该怎么办,后来也是用location转发的功能,让静态资源也能正常加载。如下图
页面可以正常显示了
后记
以为要完工的时候,测试之后发现了一个问题。接口的请求也被转发了,因为rewrite的原因导致post的参数全部丢失,无法获取到正常的数据。后来尝试用了反向代理,但是这样的话地址栏url就不会发生改变,不符合客户的需求。于是继续问人、百度,终于发现一个大佬有过这个经历,转发之后参数丢失。在国外网站上找到了解决办法,用nginx307重定向就解决了问题,经过测试完美解决这个问题。如下图
这个时候接口也能请求了,然后完工。
感谢
感谢严总、凯哥、卫哥的支持,帮忙提供了意见才想到了这个解决方案,谨以此记。
nginx分区域名转发 tp5域名分目录配置的更多相关文章
- nginx 同一域名下分目录配置显示php,html,资源文件
安装上nginx后 注意后nginx.conf 中的这么几行 error_log /var/log/nginx/error.log; 日志,这个很有用 include /etc/nginx/conf ...
- .net排坑篇:负载均衡域名转发的背后
背景 昨天因客户私有部署问题,需要到客户公司去排查问题. 他们是一家外企,各种权限需要提前申请(最大的坑).他们之前部署的一般为单域名,很少部署互联网类型多个域名的情形(第二个坑).这次私有部署总计使 ...
- nginx安装配置域名转发
1.安装pcre 1.[root@localhost home]# tar zxvf pcre-8.10.tar.gz //解压缩 2.[root@localhost home]# cd pcre-8 ...
- Nginx配置域名转发实例
域名:cps.45wan.com 所在阿里云主机:123.35.9.12 45wan没有在阿里云备案 67wan已经在阿里云备案 阿里云主机(假如123.35.9.12)上原来的nginx配置: ...
- Nginx配置以及域名转发
工程中的nginx配置 #user nobody; worker_processes 24; error_log /home/xxx/opt/nginx/logs/error.log; pid /ho ...
- 把www.domain.com均衡到本机不同的端口 反向代理 隐藏端口 Nginx做非80端口转发 搭建nginx反向代理用做内网域名转发 location 规则
负载均衡-Nginx中文文档 http://www.nginx.cn/doc/example/loadbanlance.html 负载均衡 一个简单的负载均衡的示例,把www.domain.com均衡 ...
- 端口被占用通过域名的处理 把www.domain.com均衡到本机不同的端口 反向代理 隐藏端口 Nginx做非80端口转发 搭建nginx反向代理用做内网域名转发 location 规则
负载均衡-Nginx中文文档 http://www.nginx.cn/doc/example/loadbanlance.html 负载均衡 一个简单的负载均衡的示例,把www.domain.com均衡 ...
- nginx域名转发
场景1:因服务器限制,所以只对外开放了一个端口,但是需要请求不同的外网环境,所以在中转服务器上用nginx做了一次转发 实现: server { listen 8051; server_name lo ...
- 搭建nginx反向代理用做内网域名转发
先上一个我的正常使用的配置 location / { proxy_pass http://192.168.1.84:80; proxy_redirect off; proxy_set_header H ...
随机推荐
- Spring getBean 首字母大小写问题
如果类第一个字母大写第二个小写,那么首字母小写获取bean 如果第一个和第二个字母都是大写的,那个获取bean首字母要大写
- popupWindow 在指定位置上的显示
先看效果图,免得浪费大家时间,看是不是想要的效果 . 直接上代码 ,核心方法. private void showPopupWindow(View parent) { if (popupWindow ...
- gradle 两种更新方法
第一种.Android studio更新 第一步:在你所在项目文件夹下:你项目根目录gradlewrappergradle-wrapper.properties 替换 distributionUrl= ...
- C语言从零开始(十四)-字符串处理
在软件开发过程中,字符串的操作相当频繁.在标准C语言库中提供了很多字符串处理的函数.今天我们来介绍一些常用的字符串处理函数.1. 字符串输入输出1.1 printf() scanf() 之前我们学习过 ...
- bool和BOOL类型知识集合
知识点一.C语言中有bool类型吗? 转自http://blog.csdn.net/liuqiqi677/article/details/6703615 之前一直都没有注意到,最近在用C语言写DSP算 ...
- 在apache虚拟目录配置
在apache虚拟目录配置中 <VirtualHost *:80>xxx xxx xxx</VirtualHost> 不能写成 <VirtualHost *>xxx ...
- linux Tar 命令参数详解
tar命令 . 作用 tar命令是Unix/Linux系统中备份文件的可靠方法,几乎可以工作于任何环境中,它的使用权限是所有用户. . 格式 tar [主选项+辅选项] 文件或目录 eg: tar z ...
- jQuery属性操作(二)
挂载到$上的几个属性操作方法分析,发现属性操作用到了sizzle封装的方法 attr: function( elem, name, value ) { var hooks, ret, ...
- LeetCode 50 Pow(x, n) (实现幂运算)
题目链接:https://leetcode.com/problems/powx-n/?tab=Description Problem:实现幂运算即 pow(x,n) 设形式为pow(x,n) ...
- POJ 2456 Aggressive cows(二分答案)
Aggressive cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22674 Accepted: 10636 Des ...