美文网首页
配置LNMT,LAMT反向代理

配置LNMT,LAMT反向代理

作者: 不知岁月惜 | 来源:发表于2017-11-05 17:55 被阅读0次

    如何使用NGINX反向代理用户请求至Tomcat的http连接器的8080端口完成反向代理 (一)

    LNMT:Linux Nginx MySQL Tomcat 
            Client (http) --> nginx (reverse proxy)(http) --> tomcat  (http connector)
    
    虚拟机node1(CentOS 7系统)即作为nginx服务器,又作为Tomcat服务器,客户端发来的请求首先经由nginx处理,如果为静态内容则直接由nginx响应,如果为动态内容,则由nignx反代至后端的Tomcat服务器;
    在node1服务器上安装nginx
    yum install nginx -y
    编辑nginx的配置文件/etc/nginx/conf.d/default.conf,在虚拟主机server中定义来自客户端请求的
    所有内容全部反代至后端的Tomcat服务器
    
    cd /etc/nginx/
    vim nginx.conf
    location / {
       proxy_pass http://127.0.0.1:8080;
            }
    
     或者:
     location / {
         proxy_pass http://node1.com:8080;
     }
    
    保存退出后检查nginx语法,没问题后启动nginx服务
    nginx -t
    nginx -s reload
    在浏览器中直接请求,可以正常访问资源
    
    vim nginx.conf
    
    server_name  _;
           index index.jsp index.html;        添加默认主页格式
             root         /usr/share/tomcat/webapps/ROOT;         根目录下添加静态页面
    
            # Load configuration files for the default server block.
            include /etc/nginx/default.d/*.conf;
    
             location  / {
                    proxy_pass http://127.0.0.1:8080;    
            }
          
    
    nginx -t
    systemctl restart nginx.service
    
    在自定义的Tomcat的虚拟主机的目录 /usr/share/tomcat/webapps/ROOT中添加一张静态资源图片,也可以正常访问,
    cp /usr/share/wallpapers/CentOS7/contents/images/2560x1600.jpg /usr/share/tomcat/webapps/ROOT/a.jpg   
     在虚拟机里面搜索移动到ROOT下面
    
    如上是把整个客户端请求的内容无论动静都反代至后端的服务器,现在通过在nginx的配置文件中定义实现动静分离,即:静态资源由nginx直接响应,动态资源由Tomcat响应。nginx配置文件修改如下:
    vim nginx.conf
    
      location ~* \.(jsp|do)$ {       重新定义一个虚拟主机,把jsp、do结尾的反代至后端Tomcat主机
                            proxy_pass http://node1.com:8080;   
    
    检测nginx语法,重载nginx服务
    nginx -t
    nginx -s reload
    
    新增虚拟主机
    mkdir -pv /data/webapps
    mkdir -pv /data/webapps/ROOT/{lib,classes,WEB-INF}    创建根路径
    vim index.jsp    
    
    <%@ page language="java" %>
                            <%@ page import="java.util.*" %>
                            <html>
                                    <head>
                                            <title>Test Page</title>
                                    </head>
                                    <body>
                                            <% out.println("hello node1.com");   显示内容
                                            %>
                                    </body>
                                    </html>
    
    解析虚拟机
     打开windonws系统目录:c:/windows/system32/drivers/etc找到hosts文件,打开hosts文件并在
    最后面添加一条虚拟机记录
    172.18.70.40  node1.com
    
    elinks:linux系统中打开纯文本网页界面
    参数:
    -dump   打开纯文本界面后直接退出不进入交互模式
    -source  打开网页的源代码 
    yum install elinks    
    elinks -dump http://node1.magedu.com:8080/   可以看到jsp内容
    hello node1.com
    

    如何配置httpd反向代理 LAMT:Linux Apache(httpd) MySQL Tomcat (二)

            httpd的代理模块:
                proxy_module   反代模块
                proxy_http_module:适配http协议客户端;
                proxy_ajp_module:适配ajp协议客户端;
            
                    工作流程(结合方式)  
            Client (http) --> httpd (proxy_http_module)(http) --> tomcat  (http connector)
            Client (http) --> httpd (proxy_ajp_module)(ajp) --> tomcat  (ajp connector)
            Client (http) --> httpd (mod_jk)(ajp) --> tomcat  (ajp connector)
    
    编辑httpd的配置文件,在/etc/httpd/conf.d中定义一个虚拟主机,配置使用proxy_module和proxy_http_module模块反代
    proxy_http_module代理配置
    cd /etc/httpd/conf.d/
    vim http-tomcat.conf    创建配置文件
    
    <VirtualHost *:80>       所有端口
            ServerName node1.com   主机名
            ProxyRequests off        关闭正向代理
            ProxyVia on          添加via:主机名
            ProxyPreserveHost on        后端有虚拟主机可以开启
            <proxy *>        授权所有代理访问
                    Require all granted        允许所有请求访问资源
            </Proxy>
            ProxyPass / http://127.0.0.1:8080/       
            ProxyPassReverse / http://127.0.0.1:8080/
            <Location />
                    Require all granted        
            </Location>
    </virtualhost>
    
    注意:
    在使用nginx做反代时,proxy_pass [保留主机名做反代项后端Tomcat请求,所以Tomcat能够根据反代时的
    主机名来判定,前端反代服务器请求的是Tomcat的哪个虚拟主机;(http://node1.com:8080/)
    
    但是,在使用httpd做反代时,不能通过反代(ProxyPass)时使用的主机名来判定后端Tomcat使用什么
    虚拟主机来响应。所以,这里的ProxyPass和ProxyPassReverse使用主机名或者IP地址是没有任何区别
    的,反代到后端都为ip地址,Tomcat无法判断使用哪个虚拟主机响应,只能使用默认的虚拟主机响应。
    为了能够使后端Tomcat能够使用不同的虚拟主机来响应,就要打开
    ProxyPreserveHost,保留请求时的主机名,这时客户端在浏览器中键入的主机名将会请求反代至
    后端的Tomcat,然后Tomcat分别对应不同的虚拟主机来响应请求。 
    
    检测语法,启动httpd服务,在浏览器中请求
    httpd -t
    systemctl restart httpd.service
    
    OK

    proxy_ajp_module代理配置

    自从Apache2.2出来后,又多了种选择,那就是 proxy-ajp 和 http-proxy。大家知道Apache里的proxy
    模块,可以实现双向代理功能,功能非常强大。其实从连接器的实现原理上来说,用proxy模块来
    实现是非常自然的。proxy模块的功能无非就是把相关的请求发给特定的主机再返回结果。那连接器的
    功能需求就是要把所有对Servlet/JSP的请求都转给后台的Tomcat。而且所FreeBSD邮件列表
    上说,使用proxy-ajp要比 mod_jk的效率要高。看来,使用Apache自带模块,要比另外编译的来得可靠。
    
    cd /etc/httpd/conf.d/
    cp http-tomcat.conf ajp-tomcat.conf
    vim ajp-tomcat.conf
    
    <VirtualHost *:80>
            ServerName node1.com
            ProxyRequests off
            ProxyVia on
            ProxyPreserveHost on
            <proxy *>
                    Require all granted
            </Proxy>
            ProxyPass / ajp://127.0.0.1:8009/     把http修改成ajp
            ProxyPassReverse / ajp://127.0.0.1:8009/         把http修改成ajp
            <Location />
                    Require all granted
            </Location>
    </virtualhost>
    
    进入 Host Manager 打开Server Status 状态
    ajp 连接器已经连接
    完成OK

    相关文章

      网友评论

          本文标题:配置LNMT,LAMT反向代理

          本文链接:https://www.haomeiwen.com/subject/fmmcmxtx.html