需求

假设现在有一个顶级域名ouou.com和三个二级域名default.ouou.com,blog.ouou.com,white.ouou.com,这4个域名都跟同一个IP进行绑定。三个二级域名分别对应三个不同的项目,我们希望通过不同二级域名访问服务器,用Nginx做路由转发,到达不同的项目首页。默认顶级域名与default.ouou.com到达同一个页面。

注:不一定是二级域名,可以是任意域名

环境

Nginx:1.20.1

Linux操作系统:CentOS7

配置host文件

本文实验环境在虚拟机上进行,如果使用服务器,应该用真实域名绑定到服务器ip

首先在windows文件系统中找到hosts文件:C:\Windows\System32\drivers\etc\hosts

将4个域名绑定到服务器一的ip,要知道域名只能绑定到ip而不能指定端口

服务器ip ouou.com
服务器ip default.ouou.com
服务器ip blog.ouou.com
服务器ip white.ouou.com

Nginx配置文件

首先看下Nginx的配置文件(使用lnmp快速搭建nginx环境,与正常安装不会有太大差异,在此场景不受影响)

打开文件:

vim /usr/local/nginx/conf/nginx.conf

查看Server部分,简化后:

server {listen 80 default_server reuseport;server_name _;index index.html index.htm index.php;root /home/wwwroot/default;....
}

Nginx默认监听80端口,根目录 /home/wwwroot/default,当我们访问ouou.com时,会访问服务器中/home/wwwroot/default目录下的index文件。

添加Server

在nginx.conf文件下添加Server

 server {listen 8001;server_name _;root /home/wwwroot/blog;}server {listen 8002;server_name _;root /home/wwwroot/white;}

保存文件,重启Nginx

nginx -s reload

首先测试是否能通过端口访问到项目,目录/home/wwwroot/blog、/home/wwwroot/white中需要有index.html文件,通过浏览器访问http://ouou.com:8001,http://ouou.com:8002,如果能够访问到对应目录下的index文件,表示成功。

经过这一步骤,实现Nginx监听不同端口,路由到不同的项目。接下来要做的事情是,判断请求的域名,根据域名转发到不同端口。

路由转发

在**/usr/local/nginx/conf/vhost**下创建3个文件

default.ouou.com.conf

server {listen 80;  # 监听 80 端口autoindex on;server_name default.ouou.com; # 判断域名access_log /usr/local/nginx/logs/access.log combined;index index.html index.htm index.jsp index.php;if ( $query_string ~* ".*[\;'\<\>].*" ){return 404;}location / {proxy_pass http://127.0.0.1:80; # 反向代理到 80 端口add_header Access-Control-Allow-Origin *;}
}

blog.ouou.com.conf

server {listen 80; # 监听 80 端口autoindex on;server_name blog.ouou.com; # 判断域名access_log /usr/local/nginx/logs/access.log combined;index index.html index.htm index.jsp index.php;if ( $query_string ~* ".*[\;'\<\>].*" ){return 404;}location / {proxy_pass http://127.0.0.1:8001; # 反向代理到 8001 端口add_header Access-Control-Allow-Origin *;}
}

white.ouou.com.conf文件

server {listen 80; # 监听 80 端口autoindex on;server_name white.ouou.com; # 判断域名access_log /usr/local/nginx/logs/access.log combined;index index.html index.htm index.jsp index.php;if ( $query_string ~* ".*[\;'\<\>].*" ){return 404;}location / {proxy_pass http://127.0.0.1:8002; # 反向代理到 8002 端口add_header Access-Control-Allow-Origin *;}
}

再次重启Nginx。

每段大概的意思是通过监听80端口,因为每个域名一开始都是进入到80端口,判断域名内容,然后代理到对应的地方,反向代理地址不局限于同一个服务器。

再次使用二级域名访问即可。

如果想看真实例子,欢迎阅读:Nginx反向代理部署多个项目

Nginx 根据不同域名做路由转发相关推荐

  1. iptables做路由转发服务器经典案例

    需求描述: 当前有一台服务器B IP假设为10.10.10.10 此台服务器有smtp.pop服务,用户可以正常使用 当前为了区别个性服务,需要部分用户从服务器A(192.168.100.100)去使 ...

  2. 搭建nginx反向代理用做内网域名转发

    搭建nginx反向代理用做内网域名转发 一.安装nginx $ sudo yum install nginx 二.修改配置文件 1 先备份配置文件 $ sudo cp /etc/nginx/nginx ...

  3. nginx同IP、同端口、不同域名时的转发

    在使用nginx时对于upstream的server的测试中发现,nginx默认对其使用的是基于IP的转发,这就意味着对于同IP.同端口.不同域名时无法进行转发. 在官方WIKI:http://wik ...

  4. 用Nginx做端口转发(反向代理)

    用Nginx做端口转发(反向代理) 将域名转发到本地端口 将域名转发到另一个域名 本地一个端口转发到另一个端口或另一个域名 加 / 与不加 / 有时我们会使用一些java或node应用,但又不想让他们 ...

  5. nginx实现路由转发

    nginx实现路由转发 一.nginx是什么?有什么用? 二.安装nginx 三.启动关闭nginx 四.配置nginx 谢谢阅读,拜拜! 一.nginx是什么?有什么用? 有这么一个场景:java后 ...

  6. 内网中设备通过一台主机做端口转发联通外网( TPLink路由映射,端口转发,windows自带端口转发netsh interface portproxy)

    文章目录 背景描述 需求 方案 配置有限网卡和路由器 在windows上做端口转发 背景描述 一台可以联通外网的路由器(tplink) 一台有无线网卡的计算机 n台内网设备 需求 需要让所有的设备都可 ...

  7. Nginx 实现按域名分类转发

    通过nginx配置不同的域名来实现转发到不同的tomcat book.felix.com -> 127.0.0.1:8001 movie.felix.com -> 127.0.0.1:80 ...

  8. SpringCloud--GateWay搭建及路由转发规则介绍

    一. Spring Cloud Gateway Spring Cloud GateWay 是 Spring Cloud 的⼀个全新项⽬,⽬标是取代 Netflix Zuul,它基于 Spring5.0+ ...

  9. Knative 实战:如何在 Knative 中配置自定义域名及路由规则

    作者 | 元毅 阿里云智能事业群高级开发工程师 当前 Knative 中默认支持是基于域名的转发,可以通过域名模板配置后缀,但目前对于用户来说并不能指定全域名设置.另外一个问题就是基于 Path 和 ...

最新文章

  1. element的滚动去掉横向_textarea去掉滚动条 textarea横向或纵向滚动条的去掉方法
  2. 盘点大厂的那些开源项目 - 华为
  3. linux ntfs 速度慢,将U盘磁盘格式改成NTFS解决u盘复制速度慢问题
  4. 整理下STL algorithms(3)
  5. 圣诞节海报设计需要的手写字体素材
  6. 《Android 开发入门》我为什么要在Android找工作越来越难的时候开始学习它
  7. Mac 本地搭建服务器实现itms-services方式安装ipa(自制证书)
  8. web安全day5:DNS部署与安全
  9. python服务器搭建nginx_从0开始在腾讯云服务器上搭建python3+flask+uwsgi+nginx服务器...
  10. 2022新和平精英画质助手iApp源码+附成品/可用的
  11. 怎么学计算机制作ppt,电脑ppt怎么做
  12. oracle短表和长表的区别,人口普查长表哪些人填和短表有什么区别
  13. Python词云图的几种制作方法
  14. 云空间插虾米html音乐,总结一下可以上传MP3并外链的空间
  15. 来一起学怎么攻击服务器吧!!!
  16. 前端加速必备之BootCDN
  17. OpenGauss线程管理-系统日志线程-syslogger
  18. JZOJ1321 灯
  19. 富文本生成pdf-java
  20. export和import

热门文章

  1. 细说Cocos2d-JS——从项目构造说起
  2. 笔试常见的智力题 附答案
  3. 使用Git clone失败 : ‘git clone xxx‘ 一直卡在Cloning in xxx
  4. 写程序学ML:K近邻(KNN)算法原理及实现(二)
  5. 人间不正经生活语录(二)
  6. 细节炸裂,字节官网首发Leetcode刷题手册被泄露,Github一天登顶
  7. Fastjson反序列化漏洞详解
  8. Android手势GestureDetector分析(一)——应用
  9. 图像分类:来自Kaggle中13个项目的Tips和Tricks
  10. SeqDynamics: Visual Analytics for Evaluating Online Problem-solving Dynamics