nginx通过虚拟主机功能,实现反向代理多个Tomcat服务

需求:

平时经常遇到的问题:甲方的服务器资源吃紧,还想部署一套有正规域名的网站,还不想在url上加端口号;

总结需求:

一台服务器,一个ip,多个项目,多个域名

解决思路:

  1. 首先登录域名管理后台,一般服务商都提供dns服务,在里边把这些域名都映射到这个ip 
  2. 这样外部请求都会访问服务器的80端口
  3. 用nginx监听80端口,并反向代理到其他端口

具体步骤:

window环境

  1. 安装nginx 下载地址:nginx: download 下载后解压运行exe即可,然后访问localhost验证一下,正常应该显示nginx欢迎页。                            

  2. 配置host文件,来模拟dns服务,用做测试,host位置在:C:\WINDOWS\system32\drivers\etc,我们添加这两行

     保存后,访问这两个域名验证一下设置是否有效,有效会显示nginx欢迎页。(注意设置完host文件后需要重启浏览器才能生效)

  3. 安装tomcat 下载地址,解压两份,一个重命名java,修改端口8080为8081,8005为8006,一个重命名python,修改端口8080为8082,8005为8007,

     配置tomcat端口的方法在这里,【这里】,然后启动

  4. 做两个测试用的项目:在tomcatjava的webapps文件夹中,创建文件夹,命名JAVA,创建一个index.html,在tomcatpython中的webapps文件夹中,创建文件夹命名为PYTHON,并创建一个index.html,网页内容随意,只要两个网页有区别就行。访问验证一下。

  5. 配置nginx,记事本打开nginx根目录conf/nginx.conf。将原来的server{...}部分删掉,插入以下代码。保存,重启nginx进程。

    	server {  
            listen       80;  
            server_name  *.ilovejava.com;
      
            location / {  
                proxy_pass   http://127.0.0.1:8081/JAVA/;
                index  index.html index.htm;  
            }       
        }  
    	server {  
            listen       80;  
            server_name  *.ilovepython.com;
      
            location / {  
                proxy_pass   http://127.0.0.1:8082/PYTHON/;
                index  index.html index.htm;  
            }       
        } 

  6. 验证一下,两个域名都能独立访问啦!

Linux环境

以腾讯云centos为例

1:同上,还是做好dns映射

2:云服务器需要在控制台开放端口,详见腾讯云api

 

3:云服务器登录后是这样的

 

4:安装nginx,直接敲 “yum install -y nginx” ,然后启动 ,网络安装的nginx会自动配置systemctl,所以可以使用命令“system start nginx”启动。欢迎页如图。

 

 4:配置nginx,使用“rpm -ql nginx”查找安装文件位置找到nginx.conf ,使用vim打开"vim /etc/nginx/nginx.conf"。打开长这样

 

 按i开始编辑,照着上边window配置内容敲,ip换成咱们云服务器的公网ip。然后按esc退出,输入:wq 保存退出。