Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务对外进行服务。
1.代理
在Java设计模式中,代理模式是这样定义的:给某个对象提供一个代理对象,并由代理对象控制原对象的引用。(形象比喻为中介,我们想做什么,但又不想直接去做,那么这时候就找另外一个人帮我们去做)
Nginx 主要能够代理如下几种协议,其中用到的最多的就是做Http代理服务器
1.1 正向代理
正向代理服务器位于客户端和服务器之间,为了向服务器获取数据,客户端要向代理服务器发送一个请求,并指定目标服务器,代理服务器将目标服务器返回的数据转交给客户端( VPN 就是做正向代理的,VPN 通俗的讲就是一种中转服务)
1.2 反向代理
反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址
反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器。
2.Nginx反向代理
2.1需要修改本地 host 文件,将 需要代理的网址映射到 IP.
2.2 在 nginx.conf 配置文件中增加如下配置:
1 server {
2 listen 80;
3 server_name www.baidu.com;
4
5 location / {
6 proxy_pass http://127.0.0.1:8080;
7 index index.html index.htm index.jsp;
8 }
9 }
通过上面配置,监听80端口,访问域名为www.baidu.com,不加端口号时默认为80端口,故访问该域名时会跳转到127.0.0.1:8080路径上。更贴切的说是通过nginx代理端口,原先访问的是8080端口,通过nginx代理之后,通过80端口就可以访问了.