需求

本来我们一般情况下都是域名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域名分目录配置的更多相关文章

  1. nginx 同一域名下分目录配置显示php,html,资源文件

    安装上nginx后 注意后nginx.conf 中的这么几行 error_log /var/log/nginx/error.log;  日志,这个很有用 include /etc/nginx/conf ...

  2. .net排坑篇:负载均衡域名转发的背后

    背景 昨天因客户私有部署问题,需要到客户公司去排查问题. 他们是一家外企,各种权限需要提前申请(最大的坑).他们之前部署的一般为单域名,很少部署互联网类型多个域名的情形(第二个坑).这次私有部署总计使 ...

  3. nginx安装配置域名转发

    1.安装pcre 1.[root@localhost home]# tar zxvf pcre-8.10.tar.gz //解压缩 2.[root@localhost home]# cd pcre-8 ...

  4. Nginx配置域名转发实例

    域名:cps.45wan.com   所在阿里云主机:123.35.9.12 45wan没有在阿里云备案 67wan已经在阿里云备案 阿里云主机(假如123.35.9.12)上原来的nginx配置: ...

  5. Nginx配置以及域名转发

    工程中的nginx配置 #user nobody; worker_processes 24; error_log /home/xxx/opt/nginx/logs/error.log; pid /ho ...

  6. 把www.domain.com均衡到本机不同的端口 反向代理 隐藏端口 Nginx做非80端口转发 搭建nginx反向代理用做内网域名转发 location 规则

    负载均衡-Nginx中文文档 http://www.nginx.cn/doc/example/loadbanlance.html 负载均衡 一个简单的负载均衡的示例,把www.domain.com均衡 ...

  7. 端口被占用通过域名的处理 把www.domain.com均衡到本机不同的端口 反向代理 隐藏端口 Nginx做非80端口转发 搭建nginx反向代理用做内网域名转发 location 规则

    负载均衡-Nginx中文文档 http://www.nginx.cn/doc/example/loadbanlance.html 负载均衡 一个简单的负载均衡的示例,把www.domain.com均衡 ...

  8. nginx域名转发

    场景1:因服务器限制,所以只对外开放了一个端口,但是需要请求不同的外网环境,所以在中转服务器上用nginx做了一次转发 实现: server { listen 8051; server_name lo ...

  9. 搭建nginx反向代理用做内网域名转发

    先上一个我的正常使用的配置 location / { proxy_pass http://192.168.1.84:80; proxy_redirect off; proxy_set_header H ...

随机推荐

  1. 转载 IMP时数据库的IO性能监控,并提供IOPS的计算方法

     IMP时数据库的IO性能监控,并提供IOPS的计算方法 2011-07-15 17:36:10 分类: Linux [root@ntkdb oradata]# iostat -x 1 10     ...

  2. 【代码审计】LaySNS_v2.2.0 System.php页面存在代码执行漏洞分析.

      0x00 环境准备 LaySNS官网:http://www.laysns.com/ 网站源码版本:LaySNS_v2.2.0 程序源码下载:https://pan.lanzou.com/i0l38 ...

  3. Android 监听apk安装替换卸载广播

    首先是要获取应用的安装状态,通过广播的形式 以下是和应用程序相关的Broadcast Action ACTION_PACKAGE_ADDED 一个新应用包已经安装在设备上,数据包括包名(最新安装的包程 ...

  4. 天猫浏览型应用的CDN静态化架构演变(转)

    转自:http://wbj0110.iteye.com/blog/2036613 在天猫双11活动中,商品详情.店铺等浏览型系统,通常会承受超出日常数倍甚至数十倍的流量冲击.随着历年来双11流量的大幅 ...

  5. Pycharm按装

    1.python 官方 2.下载完成后点击exe 安装 3.按装完成后在cmd中输入 python 1.如果显示python版本 那么就安装成功 2.如果出现"python"不是外 ...

  6. listView优化方案

    1.如果自定义适配器,那么在getView方法中要考虑方法传进来的参数contentView是否为null,如果为null就创建contentView并返回,如果不为null则直接使用.在这个方法中尽 ...

  7. /etc/profile /etc/profile .bash_profile .bashrc解释

    1.用户登录系统时,bash首先执行/etc/profile配置文件和/etc/profile.d/目录下的配置文件,这些配置文件对系统的所有用户都有效,它们设置了普遍性的环境变量. 2.然后,Bas ...

  8. python3 使用matplotlib画图出现中文乱码的情况

    python3使用matplotlib画图,因python3默认使用中unicode编码,所以在写代码时不再需要写 plt.xlabel(u’人数’),而是直接写plt.xlabel(‘人数’). 注 ...

  9. JS - 兼容到ie7的自定义样式的滚动条封装

    demo: html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  10. Repeater嵌套绑定Repeater以及内层调用外层数据

    aspx: <table border=" style="margin-bottom: 5px" width="100%"> <as ...