nginx配置域名后的二级目录访问不同项目的配置操作


Posted in Javascript onNovember 06, 2020

场景描述:

通过二级目录(虚拟目录,应用程序)的方式访问同一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到后端节点导致404
      proxy_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到后端节点导致404
      proxy_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" rel="external nofollow" >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"))
{

}

补充知识:使用nginx服务器,实现同一IP同一端口访问不同项目,以域名区分所访问项目

这里我使用了两台nginx服务器,一台服务器将不同项目绑定到不同端口,一台服务器将不同域名分发到不同端口的项目上。

第一台nginx的conf文件server部分:

server {
    listen    8000;
    server_name localhost;
    root  E:/test/pro1;
    location / {
      index  index.html index.htm; 
    }
  }

  server {
    listen    8001;
    server_name localhost;
    root  E:/test/pro2;
    location / {
     index  index.html index.htm;  
    }
  }

第二台nginx的conf文件的server部分:

server {
    listen    80;
    server_name www.testpro01.com testpro01.com;
    location / {
      proxy_pass  http://127.0.0.1:8000;
    }
  }

  server {
    listen    80;
    server_name www.testpro02.com testpro02.com;
    location / {
     proxy_pass  http://127.0.0.1:8001/;
    }
  }

最后用bat文件用以对两个nginx服务器进行操作

启动文件如下:start.bat

@echo off
echo [start...]
cd /d E:
cd spiovnet\nginx-1.16.1
call start nginx.exe
cd /d D:
cd nginx-1.16.1
call start nginx.exe
echo [end...]
@pause

其他的雷同,只是命令不一样

nginx启动命令:start nginx.exe 或者 nginx

nginx重新加载配置命令:nginx -s reload

ngin重启命令:nginx -s reopen

ngin关闭命令:nginx -s stop

以上这篇nginx配置域名后的二级目录访问不同项目的配置操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
iis6+javascript Add an Extension File
Jun 13 Javascript
js 强制弹出窗口代码研究-又一款代码
Mar 20 Javascript
window.open()实现post传递参数
Mar 12 Javascript
jQuery实现按键盘方向键翻页特效
Mar 18 Javascript
浅谈JavaScript中的作用域和闭包问题
Jul 07 Javascript
常用的Javascript设计模式小结
Dec 09 Javascript
js中 计算两个日期间的工作日的简单实例
Aug 08 Javascript
input 禁止输入特殊字符的四种实现方式
Aug 24 Javascript
JS实现全屏的四种写法
Dec 30 Javascript
老生常谈jacascript DOM节点获取
Apr 17 Javascript
老生常谈JavaScript面向对象基础与this指向问题
Oct 16 Javascript
Vue 监听列表item渲染事件方法
Sep 06 Javascript
Jquery Fade用法详解
Nov 06 #jQuery
nuxt静态部署打包相对路径操作
Nov 06 #Javascript
全网小程序接口请求封装实例代码
Nov 06 #Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
Nov 06 #Javascript
微信小程序自定义tabBar的踩坑实践记录
Nov 06 #Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
Nov 06 #Javascript
nuxt.js 在middleware(中间件)中实现路由鉴权操作
Nov 06 #Javascript
You might like
Dedecms V3.1 生成HTML速度的优化办法
2007/03/18 PHP
php inc文件使用的风险和注意事项
2013/11/12 PHP
php加密解密字符串示例
2016/10/13 PHP
PHP大文件切割上传功能实例分析
2019/07/01 PHP
JSP跨iframe如何传递参数实现代码
2013/09/21 Javascript
jquery获得option的值和对option进行操作
2013/12/13 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
JavaScript实现的背景自动变色代码
2015/10/17 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
2016/04/05 Javascript
第一次接触神奇的Bootstrap表单
2016/07/27 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(二)
2016/09/14 Javascript
JS实现鼠标移上去显示图片或微信二维码
2016/12/14 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
详解Node.js利用node-git-server快速搭建git服务器
2017/09/27 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
Vue.js实现的计算器功能完整示例
2018/07/11 Javascript
electron实现qq快捷登录的方法示例
2018/10/22 Javascript
JS原型prototype和__proto__用法实例分析
2020/03/14 Javascript
浅谈插入排序算法在Python程序中的实现及简单改进
2016/05/04 Python
Python reduce()函数的用法小结
2017/11/15 Python
Python键盘输入转换为列表的实例
2018/06/23 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
2020/06/02 Python
树莓派升级python的具体步骤
2020/07/05 Python
Python 操作SQLite数据库的示例
2020/10/16 Python
appium+python自动化配置(adk、jdk、node.js)
2020/11/17 Python
Links of London官方网站:英国标志性的珠宝品牌
2017/04/09 全球购物
C/C++有关内存的思考题
2015/12/04 面试题
大学生的网上创业计划书
2013/12/31 职场文书
10的分与合教学反思
2014/04/30 职场文书
营销部内勤岗位职责
2014/04/30 职场文书
警察先进个人事迹材料
2014/05/16 职场文书
企业宣传工作方案
2014/06/02 职场文书
会计试用期自我评价怎么写
2014/09/18 职场文书
普通党员四风问题对照检查材料
2014/09/27 职场文书
预备党员入党思想汇报(范文)
2019/08/14 职场文书
GO语言字符串处理函数之处理Strings包
2022/04/14 Golang