通过配置 Nginx 配置文件,实现正向代理、反向代理、负载均衡、Nginx 缓存、动静分离和高可用 Nginx 6种功能,并对 Nginx 的原理作进一步的解析 。当需要使用 Nginx 配置文件时,参考本文实例即可,建议收藏 。
文章插图
1. 正向代理 正向代理的代理对象是客户端 。正向代理就是代理服务器替客户端去访问目标服务器 。
1.1 实战一
实现效果:
在浏览器输入 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. 方法2vim ~/.bashrcexport http_proxy=http://你的正向代理服务器地址:代理端口
2. 反向代理 反向代理指代理后端服务器响应客户端请求的一个中介服务器,代理的对象是服务端 。2.1 实战一
实现效果:
在浏览器输入 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;#设置默认页}}
2.2 实战二实现效果:
根据在浏览器输入的路径不同,跳转到不同端口的服务中 。
具体配置:
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; }
实现效果:
在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 参数设置,可以使浏览器缓存过期时间之前的内容,减少与服务器之间的请求和流量 。也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量 。此种方法非常适合不经常变动的资源 。5. 动静分离5.1 实战一
实现效果:
通过浏览器地址栏访问 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;;#自动打开文件列表}}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MySql主从复制,从原理到实践
- 邵武市组织茶企到建阳考察现代茶业生产发展项目点
- 隐形文胸穿法
- 炒花甲很简单,用一个方法,就不怕吃到泥和沙子,学习一下吧
- 穿越时空?我国科学家找到构造“类虫洞”的新思路
- 瞬间吸引到顾客注意力的说话方式,这三个“工具”功不可没
- 上海迪斯尼门票有几种?到迪士尼游玩前不搞清楚,很容易吃亏的
- 运动式减肥方法有哪些?
- 夏季减肥瘦身运动有什么?
- 应该怎样运动减肥呢?