服务器学习心得


反向代理

<h1>配置nginx和tomcat实现反向代理</h1> <ul> <li>Nginx总结(五)如何配置nginx和tomcat实现反向代理</li> <li><a href="https://www.cnblogs.com/zhangweizhong/p/11378560.html">https://www.cnblogs.com/zhangweizhong/p/11378560.html</a></li> </ul> <h2>反向代理简介</h2> <ul> <li>通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器, <ul> <li>并将本来要直接发送到Web服务器上的http请求发送到代理服务器中由代理服务器向Internet上的web服务器发起请求,最终达到客户机上网的目的。</li> <li>这就是所谓的正向代理,一般就直接叫代理。</li> </ul></li> <li>反向代理(Reverse Proxy) <ul> <li>是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,</li> <li>此时代理服务器对外就表现为一个反向代理服务器。</li> </ul></li> <li>nginx 只做请求的转发,后台有多个http服务器提供服务,nginx的作用就是把请求转发给后面的服务器,决定吧请求转发给谁处理。</li> </ul> <h2>应用场景</h2> <ul> <li>两个 tomcat 服务通过 nginx 反向代理,本例子使用 3 台虚拟机进行测试</li> </ul> <table> <thead> <tr> <th>服务器名称</th> <th>IP地址</th> </tr> </thead> <tbody> <tr> <td>nginx 服务器</td> <td>192.168.32.128</td> </tr> <tr> <td>tomcat1 服务器</td> <td>192.168.32.141</td> </tr> <tr> <td>tomcat2 服务器</td> <td>192.168.32.142</td> </tr> </tbody> </table> <h2>环境准备</h2> <ul> <li> <p>nginx 服务器IP地址</p> <ul> <li>192.168.32.128</li> </ul> </li> <li> <p>2台 tomcat 服务器,我这里使用的是使用 apache-tomcat-7.0.57 版本</p> <ul> <li>在 192.168.32.141 和 192.168.32.142 虚拟机上启动 tomcat</li> </ul> </li> <li> <p>修改2个 tomcat 下的 webapps/ROOT/index.jsp 的内容,使用 tomcat1 和 tomcat2 两个服务首页显示不同的内容</p> </li> <li> <p>通过 host 文件指定 www.141proxy.com 和 www.142proxy.com 对应 192.168.32.128虚拟机</p> <ul> <li>修改window的hosts文件位置(C:\Windows\System32\drivers\etc)</li> </ul> <pre><code class="language-shell">192.168.32.141 www.141proxy.com 192.168.32.142 www.142proxy.com</code></pre> </li> </ul> <h2>进行配置</h2> <ul> <li> <p>增加配置文件</p> <pre><code class="language-shell">cd /usr/local/nginx/conf/vhosts www.141proxy.com.conf www.142proxy.com.conf</code></pre> </li> <li> <p>文件 www.141proxy.com.conf 增加内容</p> <pre><code class="language-shell"># 配置一个代理即 tomcat1 服务器 upstream tomcat_server1 { server 192.168.32.142:8080; } # 配置一个虚拟主机 server { listen 80; server_name www.141proxy.com; location / { # 域名 www.141proxy.com 的请求全部转发到 tomcat_server1 即 tomcat1 服务上 proxy_pass http://tomcat_server1; # 欢迎页面,按照从左到右的顺序查找页面 index.html index.htm index.php; } }</code></pre> </li> <li> <p>文件 www.141proxy.com.conf 增加内容</p> <pre><code class="language-shell"># 配置一个代理即 tomcat1 服务器 upstream tomcat_server2 { server 192.168.32.142:8080; } # 配置一个虚拟主机 server { listen 80; server_name www.142proxy.com; location / { # 域名 www.142proxy.com 的请求全部转发到 tomcat_server2 即 tomcat2 服务上 proxy_pass http://tomcat_server2; # 欢迎页面,按照从左到右的顺序查找页面 index.html index.htm index.php; } }</code></pre> </li> </ul> <h2>测试</h2> <ul> <li> <p>重新启动nginx,观察端口监听状态</p> <pre><code class="language-shell">systemctl restart nginx ps aux | grep nginx</code></pre> </li> <li> <p>访问虚拟主机 www.141proxy.com</p> <ul> <li><a href="http://www.141proxy.com">http://www.141proxy.com</a></li> </ul> </li> <li> <p>访问虚拟主机 www.142proxy.com</p> <ul> <li><a href="http://www.142proxy.com">http://www.142proxy.com</a></li> </ul> </li> </ul>

页面列表

ITEM_HTML