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 ...
随机推荐
- Mysql主从热备
mysql主从配置比较不错的文章,大家可以参考下~ https://www.cnblogs.com/kissdodog/p/5422195.html
- [Shell] Shell 中的算术
Shell 脚本变量默认是作为字符串处理,而不是数字,这使得在 Shell 脚本做数学运算显得较为复杂.在保持脚本编程规范和更好的算术支持方便,Perl 和 Python 会是更好的选择.但是你仍然可 ...
- [OSX] 在 OS X 中安装 MacPorts 指南
什么是MacPorts? MacPorts是使用于Mac OS中第三方包管理工具. MacPorts让你可以轻松编译.安装和管理开源软件.MacPorts可以分为两个核心部分:MacPort base ...
- React Native(十四)——Slider
最近我们rn版的App快要内测了,小伙伴们都在积极的改bug,于是在其中就遇到了关于Slider的部分小知识,特地记录自己用到的部分属性,也许恰好会帮助到用到该组件的你: 属性罗列(https://r ...
- Kindeditor问题
1.初始的时候,拿到切图,kindeditor不知道为什么就是显示不出来,只出来个文本框一样的东西 原因:样式未加载,这个是因为美工那边样式重调了,而且新项目并没有将整个插件拷贝过来,而只是拿了kin ...
- nginx fastcgi.conf的参数
编写FastCGI程序的时候有很多像php一样的参数可以获取到,并利用起来,下面就是FastCGI的一些参数. fastcgi_param SCRIPT_FILENAME $do ...
- 【大数据系列】MapReduce示例好友推荐
package org.slp; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import ...
- 求组合数 C++程序
一 递归求组合数 设函数为void comb(int m,int k)为找出从自然数1.2.... .m中任取k个数的所有组合. 分析:当组合的第一个数字选定时,其后的数字是从余下的m-1个数中 ...
- C常见机试题
初级: 一.请编写函数long fun(long int x),功能是:将长整型数x中每一位上为奇数的数依次取出,并逆序和顺序分别构成一个新数返回. 例如:程序运行时输入123456789,输出: ...
- Learning Git by Animations
https://hujiaweibujidao.github.io/blog/2016/05/20/learning-git-by-animations/ http://learngitbranchi ...