Nginx 配置实例—反向代理

本文最后更新于:2 年前

Nginx 基础知识

实例一

使用 nginx 反向代理,访问 www.123.com 直接跳转到 127.0.0.1:8080。

实现效果

打开浏览器,在浏览器地址栏输入地址 www.123.com,跳转到 liunx 系统 tomcat 主页面中。

准备工作

  1. 在 liunx 系统安装 tomcat,使用默认端口 8080

    将 tomcat 安装文件放到 liunx 系统中,解压后进入 tomcat 的 bin 目录中,使用 ./startup.sh 命令启动 tomcat 服务器。

  2. 对外开放访问的端口

    1
    2
    firewall-cmd --add-port=8080/tcp --permanent
    firewall-cmd –reload
  3. 在 windows 系统中通过浏览器访问 tomcat 服务器

过程分析

本地 Windows 浏览器不能直接访问 liunx 系统中 tomcat 8080端口(121.0.0.1:8080),而是访问对外的 80端口(192.168.59.100:80 ),通过 Nginx 服务器转发到内部的 8080 端口,这个过程叫做请求转发。

请求转发过程

具体配置

  1. 在 windows 系统的 hosts 文件中进行域名和 ip 对应关系的配置

    本地hosts文件位置

    添加域名和 ip 对应关系

    可通过自定义域名访问tomcat服务器

  2. 在 nginx 进行请求转发的配置(反向代理配置)

    编辑 /usr/local/nginx/conf/nginx.conf 配置文件,修改以下内容:

效果测试

  1. 启动 Nginx

    1
    /usr/local/nginx/sbin/nginx
  2. 在浏览器中访问 www.123.com 自动跳转到 liunx 系统 tomcat 主页面中


实例二

实现效果

使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中。

nginx 监听端口为 9001,

准备工作

  1. 准备两个 tomcat 服务器,一个 8080 端口,一个 8081 端口

    1.1 创建两个目录

    1.2 准备好两个tomcat服务器

    1.3 查找实践1开启的tomcat进程,并终止

    1.4 启动8080端口的tomcat服务器

    1.5 编辑第二个tomcat服务器配置文件

    1.6 修改图中位置的内容

    1.7 启动修改为8081端口后的tomcat服务器

    1.8 此时可在本地浏览器中访问到两个端口,准备工作完成

  2. 创建文件夹和测试页面

    在两台 tomcat 里面 webapps 目录中,分别创建名称为 edu 和 vod 的文件夹,并分别在文件夹中创建不同的页面 a.html,用于测试。

    创建8080端口测试页面

    创建8081端口测试页面

    此时可在本地浏览器可访问到两个端口的测试页面

  3. 对外开放访问的端口

    1
    2
    3
    4
    firewall-cmd --add-port=9001/tcp --permanent
    firewall-cmd --add-port=8080/tcp --permanent
    firewall-cmd --add-port=8081/tcp --permanent
    firewall-cmd –reload

过程分析

访问 http://192.168.59.100:9001/edu/a.html 直接跳转到 121.43.59.100:8080/edu/a.html

访问 http://192.168.59.100:9001/vod/a.html 直接跳转到 121.43.59.100:8081/vod/a.html

请求转发过程

具体配置

  1. 找到 nginx 配置文件,进行反向代理配置

    1
    [root@gaojie ~]# vim /usr/local/nginx/conf/nginx.conf 

    location 指令说明

    该指令用于匹配 URL。
    语法如下:

    • = :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
    • ~ :用于表示 uri 包含正则表达式,并且区分大小写。
    • ~* :用于表示 uri 包含正则表达式,并且不区分大小写。
    • ^~ :用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location块中的正则 uri 和请求字符串做匹配。

    注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。

效果测试

  1. 重启 Nginx

    启动Nginx

  2. 在本地访问 9001 端口不同路径

访问不同的路径会跳转到不同端口的服务中


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!