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{
}
- = : 用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
- ~ : 用于表示 uri 包含正则表达式,并且区分大小写。
- ~* : 用于表示 uri 包含正则表达式,并且不区分大小写。
- ^~ : 用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。
注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。
PS:可以到我的个人博客查看更多内容
个人博客地址:小关同学的博客