【Nginx】正向代理和反向代理概念与配置

正向代理

PC--------->代理服务器----------->WEB服务器

PC无法直接访问web服务器(或者无法上网时),但是代理服务器可以访问。那么代理服务器就帮PC请求页面并缓存到本地,将页面返给PC。

(PC只需要浏览器设置代理服务器IP和端口即可,PC知道代理服务器和WEB服务器的存在)类似于squid缓存

Nginx正向代理配置

需求场景1:

如果在机房中,只有一台机器可以联网,其他机器只有内网,内网的机器想用使用yum安装软件包,在能能联网的机器上配置一个正向代理即可。

server {

    listen 80 default_server;

    resolver 119.29.29.29;

    location /

    {

        proxy_pass http://$host$request_uri;

    }

}

defaulit_server之所以要设置为默认虚拟主机,是因为这样就不用设置server_name了,任何域名解析过来都可以正常访问。

proxy_pass设置要代理的url

反向代理

PC---->代理服务器(展现给PC的web页面)----->WEB服务器(web后端真实的服务器)

PC访问web服务,并不知道访问的是代理服务器,PC以为代理服务器就是web服务器,代理服务器将web服务页面缓存到本地,当PC访问时直接反馈给PC页面

(PC浏览器不需要任何的设置,PC访问代理服务器就等于访问了web,但是PC不知道真实web服务器的存在)反向代理是透明的,过程中,用户感觉不到.

server

{

    listen 80;

    server_name aminglinux.com;

    location /

    {

        proxy_pass http://1.1.1.1/;

        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_pass URL;其中URL包含:传输协议(http://, https://等)、主机名(域名或者IP:PORT)、uri,或者通过sock(unix:/tmp/www.sock;)

proxy_pass的几种情况

虚拟主机结构

.#tree /var/www/html

├── a.html(/-aaaa)

├── linux

│   └── a.html(linux--aaaa)

└── test

    └── a.html(test---aaaa)

虚拟主机配置

server {

listen 8080;

server_name www.2020.com;(也可以是别的域名,不过记得在proxy_pass后也一样修改)

root /var/www/html;

}

现在访问 www.2020.com:80/test/a.html

反向代理的配置

server {

    listen 80;

    server_name www.2020.com;

总结:proxy_pass后url的这个  /  代表绝对根路径;如果没有/,表示相对路径,把匹配的路径部分也给代理走。

(/ 相当于一把锁,当加了/,就是好像是把路径锁住了,就不能吧location 匹配的路径部分带走了,没加/ ,就是没锁住,就会吧你访问时匹配的路径目录带走。后面第四种情况,如果url/别的目录后 没加/,也不会带走匹配路径,但是会直接和路径后的url(xxx.html)直接连在一起)

你可能感兴趣的:(【Nginx】正向代理和反向代理概念与配置)