需求

本来我们一般情况下都是域名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. Nginx(七)-- 反向代理

    1.概念  反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器:并将从服务器上得到的结果返回给Internet上请求连接的 ...

  2. Android--Led_Demo_APK控制LED灯

    下面代码主要实现接口定义,实现从.so库文件接口函数在JAVA里面的声明:package com.friendlyarm.AndroidSDK; import android.util.Log; pu ...

  3. zabbix的启动和关闭脚本

    1. zabbix客户端的系统服务脚本 1.1 拷贝启动脚本 zabbix的源码提供了系统服务脚本,在/usr/local/src/zabbix-3.2.6/misc/init.d目录下,我的系统是C ...

  4. Push rejected: Push master to origin/master was rejected /failed to push some refs to /git did not exit cleanly

    用studio提交代码报 Push rejected: Push master to origin/master was rejected 用TortiuseGit提交代码报下面错,(我是用这种方法解 ...

  5. jquery前端验证框架

    1.validationEngine.jquery.css  样式包 2.jquery.validationEngine-zh_CN.js 中文语言包 3.jquery.validationEngin ...

  6. SpringMVC系列之URL匹配问题

    一.工程目录 二.web.xml配置文件及与其他文件的关系 三.控制器部分 四.返回值 五.url前后缀 六.项目源代码 http://files.cnblogs.com/files/xujian20 ...

  7. Androidの解决自动旋转导致activity重启问题

    记录一下,经常在新建项目的时候就会发生这个问题,正好上次有个群友也问道了这个问题.就是设备屏幕打开自动旋转会导致activity重启,这样会消耗很多资源. 比如在加载listview数据会重新请求数据 ...

  8. liunx trac 插件使用之GanttCalendarPlugin

    http://trac-hacks.org/wiki/GanttCalendarPlugin官网上的说明很清楚,处理做几点提示,以做记录. 1.我的Trac版本是1.0.1 我使用了'B' Metho ...

  9. C++构造函数、new、delete

    1. c++在调用构造函数时,才会把最开始的虚表指针指向虚表. 2.在构造函数或者析构函数中调用虚函数. 编译上没有问题. 运行时,调用虚函数不会发生多态行为,会调用正在构造的类的虚函数. 详细可见c ...

  10. Elasticsearch学习之相关度评分TF&IDF

    relevance score算法,简单来说,就是计算出,一个索引中的文本,与搜索文本,他们之间的关联匹配程度 Elasticsearch使用的是 term frequency/inverse doc ...