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 相关文章推荐
些很实用且必用的小脚本代码
Jun 26 Javascript
append和appendTo的区别以及appendChild用法
Dec 24 Javascript
基于javascript的COOkie的操作实现只能点一次
Dec 26 Javascript
jQuery中parents()方法用法实例
Jan 07 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
Apr 03 Javascript
javascript数组去重小结
Mar 07 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
Mar 13 Javascript
Actionscript与javascript交互实例程序(修改)
Sep 22 Javascript
bootstrap fileinput完整实例分享
Nov 08 Javascript
Javascript中document.referrer隐藏来源的方法
Jan 16 Javascript
基于JavaScript实现飘落星星特效
Aug 10 Javascript
vue 项目中使用Loading组件的示例代码
Aug 31 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
php实现jQuery扩展函数
2009/10/30 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
PHP面向对象程序设计重载(overloading)操作详解
2019/06/13 PHP
详解使用php-cs-fixer格式化代码
2020/09/16 PHP
Code:findPosX 和 findPosY
2006/12/20 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
2015/03/21 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
2015/09/25 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
jQuery模仿单选按钮选中效果
2016/06/24 Javascript
bootstrap jquery dataTable 异步ajax刷新表格数据的实现方法
2017/02/10 Javascript
JavaScript 基础表单验证示例(纯Js实现)
2017/07/20 Javascript
React Native时间转换格式工具类分享
2017/10/24 Javascript
微信小程序性能优化之checkSession的使用
2019/03/06 Javascript
详解Vue-cli3.X使用px2rem遇到的问题
2019/08/09 Javascript
vue pages 多入口项目 + chainWebpack 全局引用缩写说明
2020/09/21 Javascript
初步认识Python中的列表与位运算符
2015/10/12 Python
python监控linux内存并写入mongodb(推荐)
2017/09/11 Python
Python探索之爬取电商售卖信息代码示例
2017/10/27 Python
浅谈django的render函数的参数问题
2018/10/16 Python
利用python提取wav文件的mfcc方法
2019/01/09 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
Python3 实现串口两进程同时读写
2019/06/12 Python
收集的7个CSS3代码生成工具
2010/04/17 HTML / CSS
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
The North Face北面法国官网:美国著名户外品牌
2019/11/01 全球购物
《与朱元思书》的教学反思
2014/04/17 职场文书
教师求职自荐书
2014/06/14 职场文书
城市规划应届毕业生自荐信
2014/07/04 职场文书
手机被没收的检讨书
2014/10/04 职场文书
销售员态度差检讨书
2014/10/26 职场文书
英文自荐信范文
2015/03/25 职场文书
background-position百分比原理详解
2021/05/08 HTML / CSS
Python实现的扫码工具居然这么好用!
2021/06/07 Python
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL