nginx反向代理实践:将某个指定的域名代理到指定的服务

需求描述

我现在想要在浏览器上输入www.123.com这个网站,但是网页呈现的内容我想要显示本地tomcat服务的页面。

环境准备

  1. tomcat
  2. nginx

简单介绍

nginx作为一个高性能http web服务器,可以做很多事,比如正向代理,反向代理,缓存,黑白名单,负载均衡,安全防护等等。

本篇文章主要记录一下nginx实现反向代理,并通过一个案例呈现。

简单的介绍一下什么是反向代理:比如现在有三个角色,分别为客户端,nginx服务器,目标服务器。客户端想要访问目标服务器资源,但目标服务器又不想将自己的IP信息暴露出来,可以通过nginx服务器做个反向代理,这样客户端直接访问nginx服务器地址即可访问到目标服务器,同时,不管是正向代理还是反向代理都可以加快网站的访问速度,因为nginx服务器可以对代理中的数据作缓冲。

大概了解了什么是反向代理后,我们现在就着手开始实现吧!

实践过程

(只作大致步骤的介绍,不赘述简单过程)

  • 将本地tomcat启动端口修改为8083(至于修改成什么端口,自己定就好),然后启动,然后访问127.0.0.1:8083看一下是否启动正常。nginx反向代理实践:将某个指定的域名代理到指定的服务_第1张图片
  • cmd命令,ipconfig查看本地ip地址,例如我的ip地址为:172.16.30.113
  • 打开本地磁盘目录,C:\Windows\System32\drivers\etc,修改hosts文件,在文件最后一行加上 172.16.30.113 www.123.com,这样做的目的是将www.123.com直接解析到172.16.30.113。修改后记得保存
  • 打开nginx.conf文件,修改文件配置,在http块中加入如下配置。启动nginx(启动步骤略)
	server {
        listen      80;
        server_name  172.16.30.113;
    	location /{
                       proxy_pass         http://127.0.0.1:8083;
                       proxy_set_header   Host             $host;
                       proxy_set_header   X-Real-IP        $remote_addr;
                       proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
					   proxy_set_header   X-Forwarded-Proto  $scheme;
        }
	}

以上配置的作用是:监听本地172.16.30.113:80的请求,代理到127.0.0.1:8083服务。

因为我们又将www.123.com解析到了172.16.30.113,所以当我们访问www.123.com的时候,相当于访问了172.16.30.113:80,此时被nginx服务器处理,请求被代理到127.0.0.1:8083,即代理到了我们的tomcat服务。

看一下访问网页的效果。

nginx反向代理实践:将某个指定的域名代理到指定的服务_第2张图片

至此,需求实现完成,是不是像我们之前说的那样,浏览器就是客户端,nginx为代理服务器,172.16.30.113:8083(我的本地服务)为目标资源,我虽然访问www.123.com但是却访问到了目标资源,对于客户端浏览器而言,反向代理的作用就是隐藏了真实目标资源的地址。

更多反向代理或nginx知识大家可以多看看百度优秀的文章。

你可能感兴趣的:(nginx)