原创

Nginx学习3:反向代理实例


Nginx配置实例-反向代理1

目标

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

准备工作

我们在官网下载好tomcat之后,直接将tomcat的压缩包放到相应的目录下编译解压,然后进入tomcat的bin目录中使用./startup.sh命令启动tomcat,如下图:

在这里插入图片描述

注意:要开放系统防火墙的8080端口才能访问tomcat的主页面,我这里懒得设置,所以就直接把虚拟机的防火墙给关了...

虚拟机IP地址加8080端口访问tomcat主页面,如下图:

在这里插入图片描述

我们也可以用一下命令查看tomcat的启动日志

tail -f catalina.out

在这里插入图片描述

主机配置

第一步 在 windows 系统的 host 文件进行域名和 ip 对应关系的配置

在这里插入图片描述

通过修改本地 host 文件,将 www.123.com 映射到我们虚拟机的IP地址(假装我们有一个域名...)

在这里插入图片描述

配置完成之后,我们便可以通过 www.123.com:8080 访问到第一步出现的 Tomcat 初始界面。

配置 nginx.conf 配置文件

在这里插入图片描述

如上配置,我们监听 80 端口,访问域名为 www.123.com,不加端口号时默认为 80 端口,故访问该域名时会跳转到 127.0.0.1:8080 路径上。

然后我们在主机浏览器输入 www.123.com ,访问到tomcat主页,如下图:

在这里插入图片描述

遇到的问题

注意:有的人在最后一步完成后可能会出现访问失败的情况,即输入 www.123.com 访问的是 nginx 的欢迎页面,这是因为我们没有指定配置文件启动 nginx 导致的,我们需要指定配置文件来重新启动一遍nginx,如下:

# 指定配置文件重启nginx
# nginx的启动目录/nginx -s reload -c /nginx的配置文件目录/nginx.conf
/usr/local/nginx/sbin/nginx -s reload -c /home/centos7-2/Nginx/nginx-1.20.1/conf/nginx.conf

# 指定配置文件启动nginx
# nginx的启动目录/nginx -c /nginx的配置文件目录/nginx.conf
/usr/local/nginx/sbin/nginx -c /home/centos7-2/Nginx/nginx-1.20.1/conf/nginx.conf

Nginx配置实例-反向代理2

目标

使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中 nginx 监听端口为 9001, 访问 http://192.168.126.131:9001/edu/ 直接跳转到 127.0.0.1:8080 访问 http://192.168.126.131:9001/com/ 直接跳转到 127.0.0.1:8081

准备工作

(1)准备两个 tomcat 服务器,一个 8080 端口,一个 8081 端口,如下图:

在这里插入图片描述

准备好两个 tomcat 服务器之后,我们修改这两个服务器的端口,如下图:

在这里插入图片描述

找到 tomcat 的配置文件,修改 server.xml 里面的内容。 首先把 shutdown 端口修改成8006,如下图:

在这里插入图片描述

然后再把 tomcat 运行端口修改成 8081,如下图:

在这里插入图片描述

总之,把所有跟另一个 tomcat 服务器相同的端口都改了,以避免发生端口冲突。

最后,去到 bin 目录底下将两个 tomcat 都启动起来,如下图:

在这里插入图片描述

再检查一下是否成功启动了,如下图:

在这里插入图片描述

在这里插入图片描述

我们可以看到,两个 tomcat 服务器都成功启动起来了。

(2)创建文件夹和测试页面 然后我们在两个 tomcat 服务器下面的 webapps 目录底下创建测试文件夹 edu、com 和测试页面 a.html、b.html,如下图:

在这里插入图片描述

在这里插入图片描述

我们来测试一下页面是否创建成功,如下图:

在这里插入图片描述

在这里插入图片描述

具体配置

(1)找到 nginx 配置文件,进行反向代理配置,如下图:

在这里插入图片描述

其中 9001 是 nginx 要监听的端口,server_name 就是本机的 ip 地址。~ /edu/中的“~”是一种正则表达式的形式,表示当路径中有 “eud” 时,则转发到相应的路径去。

最终测试

在这里插入图片描述

在这里插入图片描述

location 配置说明

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

location [= | ~ | ~* | ^~] uri{

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

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

Nginx
End
  • 作者:小关同学(联系作者)
  • 发表时间:2021-10-01 20:51
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 公众号转载:请在文末添加作者博客链接
  • 问题交流(QQ群)