反向代理
<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>