配置实例
下面通过配置 Nginx 配置文件,实现正向代理、反向代理、负载均衡、Nginx 缓存、动静分离和高可用 Nginx 6 种功能,并对 Nginx 的原理作进一步的解析 。当需要使用 Nginx 配置文件时,参考本文实例即可,建议收藏 。
①正向代理
正向代理的代理对象是客户端 。正向代理就是代理服务器替客户端去访问目标服务器 。
实现效果:在浏览器输入 www.google.com , 浏览器跳转到 www.google.com。
具体配置:
server{resolver 8.8.8.8;listen 80;location / {proxy_pass http://$http_host$request_uri;} } 在需要访问外网的客户端上执行以下一种操作即可:
1. 方法1(推荐) export http_proxy=http://你的正向代理服务器地址:代理端口2. 方法2 vim ~/.bashrc export http_proxy=http://你的正向代理服务器地址:代理端口②反向代理
反向代理指代理后端服务器响应客户端请求的一个中介服务器,代理的对象是服务端 。
实现效果:在浏览器输入 www.abc.com , 从 Nginx 服务器跳转到 linux 系统 Tomcat 主页面 。
具体配置:
server {listen80;server_name192.168.4.32;#监听地址location/ {root html;#/html目录proxy_pass http://127.0.0.1:8080;#请求转向indexindex.html index.htm;#设置默认页}} 实现效果:根据在浏览器输入的路径不同,跳转到不同端口的服务中 。
具体配置:
server {listen9000;server_name192.168.4.32;#监听地址location~ /example1/ {proxy_pass http://127.0.0.1:5000;}location~ /example2/ {proxy_pass http://127.0.0.1:8080;}} Location 指令说明:
- ~:表示 uri 包含正则表达式,且区分大小写 。
- ~*:表示 uri 包含正则表达式,且不区分大小写 。
- =:表示 uri 不含正则表达式,要求严格匹配 。
实现效果:在浏览器地址栏输入 http://192.168.4.32/example/a.html ,平均到 5000 和 8080 端口中,实现负载均衡效果 。
具体配置:
upstream myserver {server 192.167.4.32:5000;server 192.168.4.32:8080; }server {listen80;#监听端口server_name192.168.4.32;#监听地址location/ {root html;#html目录index index.html index.htm;#设置默认页proxy_passhttp://myserver;#请求转向 myserver 定义的服务器列表}} Nginx 分配服务器策略:轮询(默认):按请求的时间顺序依次逐一分配,如果服务器 down 掉,能自动剔除 。
权重:weight 越高,被分配的客户端越多,默认为 1 。
比如:
upstream myserver {server 192.167.4.32:5000 weight=10;server 192.168.4.32:8080 weight=5; } IP:按请求 IP 的 Hash 值分配,每个访客固定访问一个后端服务器 。比如:
upstream myserver {ip_hash;server 192.167.4.32:5000;server 192.168.4.32:8080; } Fair:按后端服务器的响应时间来分配,响应时间短的优先分配到请求 。比如:
upstream myserver {fair;server 192.168.4.32:5000;server 192.168.4.32:8080; } ④Nginx 缓存实现效果:在 3 天内,通过浏览器地址栏访问 http://192.168.4.32/a.jpg,不会从服务器抓取资源,3 天后(过期)则从服务器重新下载 。
具体配置:
# http 区域下添加缓存区配置 proxy_cache_path /tmp/nginx_proxy_cache levels=1 keys_zone=cache_one:512m inactive=60s max_size=1000m;# server 区域下添加缓存配置 location ~ .(gif|jpg|png|htm|html|css|js)(.*) {proxy_pass http://192.168.4.32:5000;#如果没有缓存则转向请求proxy_redirect off;proxy_cache cache_one;proxy_cache_valid 200 1h;#对不同的 HTTP 状态码设置不同的缓存时间proxy_cache_valid 500 1d;proxy_cache_valid any 1m;expires 3d; } Expires 是给一个资源设定一个过期时间,通过 Expires 参数设置,可以使浏览器缓存过期时间之前的内容,减少与服务器之间的请求和流量 。也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量 。此种方法非常适合不经常变动的资源 。
⑤动静分离
实现效果:通过浏览器地址栏访问 www.abc.com/a.html ,访问静态资源服务器的静态资源内容 。
通过浏览器地址栏访问 www.abc.com/a.jsp ,访问动态资源服务器的动态资源内容 。
具体配置:
upstream static {server 192.167.4.31:80; }upstream dynamic {server 192.167.4.32:8080; }server {listen80;#监听端口server_namewww.abc.com; 监听地址# 拦截动态资源location ~ .*.(php|jsp)$ {proxy_pass http://dynamic;}# 拦截静态资源location ~ .*.(jpg|png|htm|html|css|js)$ {root /data/;#html目录proxy_pass http://static;autoindex on;;#自动打开文件列表}} ⑥高可用
推荐阅读
- 辛夷花泡水喝的步骤教程,四大步骤教你如何简易而快速的冲泡百合花茶
- 花茶的正确喝法你知道吗,由内而外的美
- 喝苦荞茶的注意事项,四大步骤教你如何简易而快速的冲泡百合花茶
- 冬季滋补不用面面俱到 但这类食物必不可少
- 玫瑰和茉莉能起喝吗,而且越喝越年轻吗
- 空间站中的氧气为什么感觉永远用不完,从何而来?
- 为什么程序员不拿自己写的程序去卖,而要在公司领死工资呢?
- 求职|大专生打败985高材生转正,网友不但不祝福,反而质疑声不断
- 红巧梅泡水喝的功效,由内而外的美
- 真正厉害的人,向来不是一团和气,而是具备一定的“攻击性”
