场景描述:

通过二级目录(虚拟目录,应用程序)的方式访问同一ip+端口的不同应用,例如location是用户使用页面,location/admin/是管理页面,location部署在192.168.1.100的80端口,location/admin部署在172.20.1.32的8080端口上。

解决方案:

使用nginx反向代理,配置如下:

server {listen 80;server_name demo.domain.com;#通过访问service二级目录来访问后台location /service {#DemoBackend1后面的斜杠是一个关键,没有斜杠的话就会传递service到后端节点导致404proxy_pass      http://DemoBackend1/;proxy_redirect  off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}#其他路径默认访问前台网站location / {proxy_pass http://DemoBackend2;proxy_redirect  off;proxy_set_header  Host  $host;proxy_set_header  X-Real-IP  $remote_addr;proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;}}#简单的负载均衡节点配置
upstream DemoBackend1 {server 192.168.1.1;server 192.168.1.2;ip_hash;}
upstream DemoBackend2 {server 192.168.2.1;server 192.168.2.2;ip_hash;
}

但是这种方式,二级目录的样式文件都不会正常显示,他们不会自动在二级目录下查找,而是在根目录中查找,在跳转页面的时候也会报404错误。不知道是不是配置有误,在server块中配置了root或是rewrite都不能解决。

试着在proxy_pass后面加上二级目录,并且和location块的二级目录相同,配置如下

server {listen 80;server_name demo.domain.com;#通过访问service二级目录来访问后台location /service {#DemoBackend1后面的斜杠是一个关键,没有斜杠的话就会传递service到后端节点导致404proxy_pass      http://DemoBackend1/service;#DemoBackend1网站中要配置一个名称为service的虚拟目录,并且和location的二级目录名称一致proxy_redirect  off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}#其他路径默认访问前台网站location / {proxy_pass http://DemoBackend2;proxy_redirect  off;proxy_set_header  Host  $host;proxy_set_header  X-Real-IP  $remote_addr;proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;}}#简单的负载均衡节点配置
upstream DemoBackend1 {server 192.168.1.1;server 192.168.1.2;ip_hash;}
upstream DemoBackend2 {server 192.168.2.1;server 192.168.2.2;ip_hash;
}

问题解决

另外,在实际应用中,我使用了asp.net 的mvc,将mvc设置为网站的方式没有问题,如果是虚拟目录的方式就会找不到路径,是因为自己在网站中的地址很多写的都不规范,正确的方式应该是:

Here's a typical example of what you should never do:

<script type="text/javascript">$.ajax({url: '/home/index'});
</script>

and here's how this should be done:

<script type="text/javascript">$.ajax({url: '@Url.Action("index", "home")'});
</script>

Here's another typical example of something that you should never do:

<a href="/home/index">Foo</a>

and here's how this should be written:

@Html.ActionLink("Foo", "Index", "Home")

Here's another example of something that you should never do:

<form action="/home/index" method="opst"></form>

and here's how this should be written:

@using (Html.BeginForm("Index", "Home"))
{}引用:
https://zhangge.net/5054.html
http://blog.csdn.net/lusyoe/article/details/52928649

来源:https://www.cnblogs.com/bayu/p/8041453.html

nginx配置域名后的二级目录访问不同项目的配置相关推荐

  1. nginx多域名设置和多子目录实现共用一端口

    nginx多域名设置,多子目录,共用一端口 nginx多域名设置,多子目录,公用一端口 前段时间自己买了一个80G的服务器,所以想把原来的网站都整合到这台服务器上面,现在在服务器上绑定了五个域名. 下 ...

  2. nginx配置二级目录访问tomcat

    之前没有接触过nginx,但公司运维出现问题,于是由我来修改nginx配置文件,添加二级目录来访问tomcat下的项目. 推荐博客: https://blog.csdn.net/daybreak120 ...

  3. nginx vue2+webpack 和 vue3+vite 配置二级目录访问

    首先我们要配置一个106.13.0.11:8083/qfqzApp的二级路由,针对于vue2项目,我们需要进行一下操作. 1.nginx配置(vue2 和 vue3配置的nginx相同) server ...

  4. nginx反向代理二级目录 导致vue项目静态文件css js访问不到

    2022年5月30日19:06:00 nginx vue项目配置 server {listen 9888;server_name 127.0.0.1;error_log /data/log/nginx ...

  5. tomcat相关配置技巧梳理 (修改站点目录、多项目部署、限制ip访问、大文件上传超时等)...

    tomcat常用架构: 1)nginx+tomcat:即前端放一台nginx,然后通过nginx反向代理到tomcat端口(可参考:分享一例测试环境下nginx+tomcat的视频业务部署记录) 2) ...

  6. Apache配置--用户认证(针对目录访问)-update2015-05-02

    通过Apache配置可以限制用户对目录的访问,会弹出像phpadmin一样的登陆框. ========================================================= ...

  7. Nginx 设置域名转发到指定目录

    域名转发的其它步骤参见 Nginx 设置域名转发到指定端口 在指定目录里存放一张图片,以便测试.我这里是在 /www/jaydenmall/ 里存放了一张 gg.jpg 在 vhost 里添加 ima ...

  8. springboot配置启动后自动打开浏览器访问项目

    springboot配置项目启动后自动打开浏览器访问项目 有时候在单机部署,或者项目没有在IDea 开发工具中运行(idea可以自动打开tomcat项目),需要项目启动后自动打开浏览器访问项目,配置方 ...

  9. nginx同域名代理tomcat不同目录下的文件

    使用nginx的rewrite实现代理指定目录 笔记 server {listen 80;server_name a.com;#charset koi8-r;#access_log logs/host ...

最新文章

  1. Java中的回调函数学习-深入浅出
  2. 在IE下,当eval遇上function
  3. LeetCode 982. 按位与为零的三元组(位运算+计数)
  4. java基础—集合 Vcetor 基本方法演示
  5. 实验2-2-2 计算摄氏温度 (10 分)
  6. xss挖掘思路分享_视频分享:XSS的利用与挖掘
  7. 在python中安装python库
  8. 第24周SDAI缓解能否预测远期RA骨破坏受抑制
  9. 网络安全与信息安全【知识点】
  10. ibm主机安装服务器系统安装系统安装系统安装方法,IBM系列服务器安装操作系统安装方法.ppt...
  11. python--RGB转HSV
  12. matlab interp1 spline,中国大学MOOC: MATLAB/Octave函数interp1中有一个描述插值方法的参数,其中spline表示...
  13. Android Kiosk 模式
  14. WP7 SDK模拟器对应PC键盘的功能键
  15. python微信小程序抢购_Python实现微信小程序支付功能!Python确实强的一批!
  16. 这边提供几个公共方法:MD5签名方法、获取时间戳、生成随机串、string转base64、base64转string
  17. 95后不喝领导敬酒被打脸,看透6个底层逻辑,你就懂酒文化结局
  18. [Linux转载]Linux 操作常用命令
  19. vue自定义百度地图弹窗
  20. 我的江湖也是你的江湖

热门文章

  1. 真香!炫酷的机械键盘贼爽!包邮送到家!
  2. Orleans 分布式 计算框架-Actor模型的一种实现
  3. estx matlab,自动控制LTI系统的MATLAB辅助.ppt
  4. ipad和iphone适配_如何在iPhone和iPad上禁用Siri
  5. 《花束般的恋爱》:用力绽放却注定凋零
  6. 抖动和延迟之间的区别
  7. java+vue在线学习平台考试作业课程签到系统springboot
  8. 戒梭先生|比盈亏更重要的交易生活观
  9. mac桌面版安装docker并安装centos环境
  10. java基本语法循环语句 —for循环