• 一、Nginx 配置
  • 二、Nginx 代理
  • 三、Nginx 负载均衡
  • 四、Nginx 性能调优

一、Nginx 代理

  • 提高访问速度
  1. 由于 目标主机 返回的数据,会存放在 代理服务器 的硬盘中。
  2. 因此下一次 客户端 再访问 相同的站点数据 时,会直接从 代理服务器 的硬盘中读取,起到了 缓存 的作用。
  3. 尤其对于 热门站点 能明显 提高请求速度。

  • 防火墙作用
  1. 由于所有的 客户机 请求,都必须通过 代理服务器 访问远程站点。
  2. 因此可在 代理服务器 上设限,过滤某些不安全信息。

  • 通过 代理服务器,访问 受限制的目标站点
  1. 互联网上有许多开放的 代理服务器,客户端 直接访问 目标站点 受限时,可通过不受限的 代理服务器 访问目标站点。
  2. 通俗说,我们使用的 翻墙浏览器 就是利用了 代理服务器,虽然不能出国,但也可直接访问 外网。

1. 正向代理

  • 正向代理。
  1. 指 客户端 与 目标服务器 之间增加一个 代理服务器。
    客户端 直接访问 代理服务器,再由 代理服务器 访问 目标服务器。
    并返回给 客户端。
  2. 这个过程中,客户端 需要知道 代理服务器 地址,并配置连接。

  • 应用场景。
  1. 架设在 客户端 与 目标服务 之间,用于 代理内网 对 外部 Internet 的连接请求。

2. 反向代理

  • 反向代理。
  1. 指 客户端 访问 目标服务器。
    在 目标服务 内部有一个统一 接入网关,将 请求 转发至 后端真正处理的服务器,并返回结果。
  2. 这个过程中,客户端 不需要知道 代理服务器 地址,代理对客户端 是透明的。

  • 应用场景。
  1. 服务架设在 服务器端,通过 缓存 经常被请求的页面 来 缓解服务器压力。

3. 正向代理 & 反向代理区别

区别 正向代理 反向代理
代理服务器位置 客户端 与 服务端 都能连接的位置 ⽬标服务器内部
主要作⽤ 屏蔽 客户端IP、集中式缓存、解决 客户端 不能直连 服务端 的问题 屏蔽 服务端 内部实现、负载均衡、缓存
应⽤场景 爬⾍、翻墙、Mavennexus 服务 NginxApache 负载均衡应⽤

4. 代理基本配置

  • Nginx 代理,只需要配置 locationproxy_pass 属性即可。
  • 其指向 代理的服务器地址。

# 正向代理到`baidu`服务
location = /baidu.html {proxy_pass http://www.baidu.com;
}

# 反向代理至本机的`8080`服务
location /qs/ {proxy_pass http://127.0.0.1:8080;
}

5. 代理相关参数

# 代理服务
proxy_pass '代理服务地址';# 是否允许重定向
proxy_redirect off;   # 传`header`参数至后端服务
proxy_set_header Host $host;
# 设置`request header`(`$remote_addr`即客户端`IP`地址)
proxy_set_header X-Forwarded-For $remote_addr;# `连接代理服务`超时时间。
proxy_connect_timeout 90;
#proxy_connect_timeout 360000s;
# `请求发送`最大时间。
proxy_send_timeout 90;
#proxy_send_timeout 360000s;#后端服务器数据回传时间(代理发送超时)
# `响应读取`最大时间。(连接成功后,后端响应时间)
proxy_read_timeout 90;
#proxy_read_timeout  360000s;# nginx与后端`fastcgi server`连接超时时间。
fastcgi_connect_timeout 360000s;
# nginx向后端传送请求超时时间(指已完成两次握手后向fastcgi传送请求超时时间)。
fastcgi_send_timeout 360000s;
# nginx向后端传送响应超时时间(指已完成两次握手后向fastcgi传送响应超时时间)。
fastcgi_read_timeout 360000s;proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

二、反向代理案例

1. 需要修改本地 hosts 文件

  • 注意:这种配置方式的域名,不会被 DNS 解析。

server {# 监听`80`端口 listen 80;# 配置服务名,代表外网访问的域名server_name www.qs.com;   # 重定向#return 301 https://www.xxx.com$request_uri;   location / {# 目标服务器地址(`tomxat`地址)proxy_pass http://127.0.0.1:8080/; proxy_set_header X-real-ip $remote_addr;}
}

2. 无需修改本地 hosts 文件

  • 注意:这种配置方式的域名,会被 DNS 解析,能直接访问。

server {listen 443 ssl;server_name www.qs.com;ssl_certificate /usr/local/nginx/ssl/2182670__xxx.com.pem;ssl_certificate_key /usr/local/nginx/ssl/2182670__xxx.com.key;ssl_session_timeout 5m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;ssl_prefer_server_ciphers on;location / {proxy_pass http://127.0.0.1:8080/;proxy_set_header X-real-ip  $remote_addr;}
}

3. 动静分离

upstream backend.qs.com {server 172.17.0.4:8080 weight=5;server 172.17.0.5:9090 weight=10;
}upstream static.qs.com {server 172.17.0.3:1010;
} server {# 监听`80`端口 listen 80;# 配置服务名,代表外网访问的域名server_name www.qs.com;        location / {root /home/nginx ;index  index.html index.htm;}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {proxy_pass http://static.qs.com;}location ~ .*\.(js|css)?$ {proxy_pass http://static.qs.com;}location ~ .*\.(html)?$ {proxy_pass http://static.qs.com;}location ^~ /qs/ {# 目标服务器地址(`tomxat`地址)proxy_pass http://backend.qs.com;  proxy_set_header X-real-ip  $remote_addr;}
}

server {# 监听`80`端口listen 80;# 配置服务名,代表外网访问的域名server_name  www.qs.com;# 静态目录root /root/web;  index index.html; error_page    404   /index.html;# 过滤`/qs`location ^~ /qs/ {# 目标服务器地址(tomxat地址)proxy_pass http://127.0.0.1:8080;# 连接代理服务超时时间proxy_connect_timeout 1800;# 请求发送最大时间proxy_send_timeout 1800;# 读取最大时间proxy_read_timeout 1800;# 上传上限client_max_body_size 2048m;proxy_http_version 1.1;  proxy_set_header Upgrade $http_upgrade;  proxy_set_header Connection "Upgrade"; # required for docker client's sakeproxy_set_header  Host              $http_host; # pass on real client's IP 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;}
}

4. 虚拟主机

upstream www.qs.com {server 172.17.0.2:8080;
}upstream blog.qs.com {server 172.17.0.3:9090;
}upstream download.qs.com {server 172.17.0.4:7070;
}server {listen       80;server_name  www.qs.com;location / {proxy_pass   http://www.qs.com;index  index.html index.htm;}
}server {listen       80;server_name  blog.qs.com;location / {proxy_pass   http://blog.qs.com;index  index.html index.htm;}
}server {listen       80;server_name  download.qs.com;location / {proxy_pass   http://download.qs.com;index  index.html index.htm;}
}

5. WebService 代理接口

server {listen 80;server_name qs.com;# 项目位置root E:/tool/web; index index.html; error_page    404   /index.html;location ^~ /qs {proxy_pass http://192.168.91.132:9999/QSService.asmx?wsdl;proxy_connect_timeout 1800;proxy_send_timeout 1800;proxy_read_timeout 1800;client_max_body_size 2048m;proxy_http_version 1.1;  proxy_set_header X-real-ip $remote_addr;proxy_set_header Upgrade $http_upgrade;  proxy_set_header Connection "Upgrade"; proxy_set_header  Host              $http_host;   # required for docker client's sakeproxy_set_header  X-Real-IP         $remote_addr; # pass on real client's IPproxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;proxy_set_header  X-Forwarded-Proto $scheme;}
}

二、Nginx 代理相关推荐

  1. 通过Nginx代理机制下载微信二维码

    文章目录 通过Nginx代理机制下载微信二维码 通过Nginx代理机制下载微信二维码 通过nginx代理机制,解决 前端 在页面中通过js直接下载微信二维码产生的跨域问题. location ^~ / ...

  2. nginx代理响应报文体不全解决思路

    问题说明 环境说明: centos 6.5 nginx 1.13.7 tomcat 8.5+ jdk 1.8 问题描述 本地访问测试机接口发生异常 curl访问结果: tomcat日志: 解决思路 开 ...

  3. nginx代理多个flask

    2019独角兽企业重金招聘Python工程师标准>>> nginx 代理多个flask 本文讲述如何用nginx代理多个flask,从而进行负载均衡 所需准备 : 1. nginx ...

  4. 使用Nginx代理和转发Websocket连接

    1.Websocket 简介 WebSocket协议是基于TCP的一种新的网络协议.它实现了浏览器与服务器全双工(full-duplex)通信--允许服务器主动发送信息给客户端. 2.Nginx 简介 ...

  5. LNMP(nginx防盗链,访问控制,解析php相关配置,Nginx代理,常见502问题)

    一.nginx防盗链 nginx防盗链: [root@lnmp ~]# vim /usr/local/nginx/conf/vhost/test.com.conf   添加以下内容 location ...

  6. Liunx之nginx代理

    一.代理 正向代理 正向代理,也就是传说中的代理,他的工作原理就像一个跳板(VPN),简单的说: 我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的 ...

  7. [HTTP] Nginx代理以及面向未来的HTTP

    Nginx的下载安装 Nginx下载官网 下载完之后解压即可 启动nginx 可以用Git Bash启动(或者用命令行启动也行) 找到指定文件夹下,输入命令 ./nginx.exe或者 start n ...

  8. Nginx代理规则总结

    Nginx代理规则总结 说明 一.location 二.proxy_pass (1)proxy_pass包括ip和资源路径,结尾没有/ (2)proxy_pass包括ip和资源路径,结尾有/ (3)p ...

  9. Nginx 代理缓存

    官方文档:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path 一.设置缓存的路径和其他参数 句法:pro ...

最新文章

  1. 黄聪:wordpress文章同步发布到网易、天涯、新浪博客、百度空间插件
  2. 7. Python运算符之逻辑、成员、身份运算符及优先级
  3. [转]SQL Server 2005链接字符串
  4. phpjson多层乱码解决
  5. 没有找到 html 模板,Spring Boot and Thymeleaf:找不到HTML模板
  6. C++ 深复制与浅复制 RVO问题
  7. 看明星合影争C位,学PPT中C位排版法
  8. Java基础篇:循环语句之while语句
  9. 19年PDYZ冬令营游记
  10. Error response from daemon: failed to parse mydockerfile-centos: ENV must have two arguments
  11. 软件测试-搭建测试环境
  12. 单页面网站如何高效做SEO优化?
  13. linux 保存bmp 图片
  14. Codeforces 274E. Mirror Room-模拟+STL
  15. 巨星传奇更新招股书:业务绑定歌手周杰伦 上半年营收降24%
  16. HTML5常用的文本标签及css字体样式属性
  17. 信息技术与计算科学(二)信息的度量
  18. 区块链技术研究热点有哪些
  19. 超好用的奈飞Netflix客户端:Netflix for Mac
  20. JES-java emil server搭建

热门文章

  1. 放什么风什么的成语(放什么风什么四字成语大全)
  2. Windows环境使用bat脚本启动Redis服务
  3. 鲁大师6月新机性能榜:华为频推4G新机求生?
  4. eNSP中网云不能识别网卡
  5. 国科解决YT8521网不通的方法
  6. 安卓代码拉下来编译后怎么运行_科普:什么是华为方舟编译器?如何工作?荣耀手机能用吗?...
  7. 使用xshell连接华三模拟器
  8. 为什么短链推广没有效果?你可能忽视了最重要的一点
  9. 2021年全球豌豆蛋白和豌豆蛋白粉行业调研及趋势分析报告
  10. 机械臂-Part A:刚体位姿的描述