在配置nginx的时候,有一个需求,访问m.XXX.com的时候,需要实际访问www.YYY.com/m,并且域名不能发生变化。

  达成这个需求有两种做法:

    第一种就是301跳转,使用rewrite来跳转域名,不过这样域名就会发生变化,与需求不符。

    第二种就是用proxy_pass跳转,只要指定跳转目的域名,就可以在访问的时候自动跳转访问目的域名,而且域名也不会发生变化。所以这里需要使用第二种方法。


  首先在/etc/nginx/conf.d/建立一个m.XXX.com.conf文件,内容为:

 server
{
listen 80;
server_name m.XXX.com; location /
{
proxy_pass http://www.YYY.com/m/;
}
}

  这里要注意proxy_pass后面域名最后的"/",如果不添加,会跳转失败。

  然后在/etc/nginx/nginx.conf的http块内添加一行:

 include /etc/nginx/conf.d/m.XXX.com.conf;

  然后就是重启nginx:

 sudo /usr/nginx/nginx -s reload

  这样就可以在访问m.XXX.com的时候自动跳转到访问www.YYY.com/m了,而且域名不会发生改变。

  这里又出现了一个问题,静态资源访问不了,所以我们在m.XXX.com.conf里添加静态资源访问设置:

 server
{
listen 80;
server_name m.XXX.com; location /
{
proxy_pass http://www.YYY.com/m/;
} location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|html)$
{
root /home/YYY/java/apache-tomcat-6.0.41/webapps/ROOT/;
expires 30d;
}
}

  当指定了静态资源的访问目录后,就能够访问到静态文件了。

  至此,需求已经解决!


  在测试后,还出现了一个问题,后台需要获取用户的信息,所以需要在m.XXX.com.conf的location内添加上下面的两行,用以修改请求头:

 proxy_set_header Host $http_host;
proxy_set_header X-Forward-For $remote_addr;

  按理说这样就可以了,可是却出现了"502 Bad Gateway"错误,如果将第一行给删去,则可以恢复正常访问页面,如果除去注释,错误又出现了。查询了很多办法,均无法解决这个问题,兹将次问题记下,待解决了补齐!

最新文章

  1. 数论 - Vanya and Computer Game
  2. js二级下拉菜单
  3. netbeans git 配置(ssh方式)
  4. centos 64bit 安装与升级 chrome的方法
  5. RPC漏洞
  6. centos7.1磁盘分区 格式化 挂载
  7. 移动WEB 响应式设计 @media总结
  8. 【转载】详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI区别
  9. 详解k8s原生的集群监控方案(Heapster+InfluxDB+Grafana) - kubernetes
  10. 权限组件之rbac
  11. 【NET CORE微服务一条龙应用】第三章 认证授权与动态权限配置
  12. 自动配置redis主从和哨兵
  13. cf1025c 思维题
  14. java相对路径、绝对路径及类路径
  15. 教你怎么看网站是用react搭建的
  16. localStorage,sessionStorage的使用
  17. C#-MVC开发微信应用(7)--在管理系统中同步微信用户分组信息
  18. Django 的逆向解析url--reverse(转)
  19. Java并发知识整理
  20. Git GUI可视化操作教程

热门文章

  1. SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)
  2. Rsync+Inotify实现文件自动同步
  3. css中padding和magin的区别
  4. C#串口数据互通小程序
  5. alicemq 方便的RabbitMQ 可视化工具
  6. Tomcat入门级小白教程
  7. 部署LAMP架构及其应用
  8. TCP 的保活定时器
  9. POJ3666 Making the Grade
  10. redis存储的数据类型