1、location 的匹配规
1.1、空格:默认匹配,普通匹配
location / {
root /home;
}
1.2、=: 精确匹配
location = /huitailang/img/face1.png {
root /home;
}
1.3、~* :匹配正则表达式,不区分大小写
#符合图片的显示
location ~* .(GIF|jpg|png|jpeg) {
root /home;
}
1.4、~ :匹配正则表达式,区分大小写
#GIF必须大写才能匹配到
location ~ .(GIF|jpg|png|jpeg) {
root /home;
}
1.5、^~ :以某个字符路径开头
location ^~ /huitailang/img {
root /home;
}
2、root 与 alias
2.1、root 路径完全匹配访问
location /huitailang {
root /home
}
2.2、alias 可以为你的路径做一个别名,对用户透明
location /hello {
alias /home/huitailang
}
3、Nginx 跨域配置支持
#允许跨域请求的域,*代表所有
add_header 'Access-Control-Allow-Origin' *;
#允许带上cookie请求
add_header 'Access-Control-Allow-Credentials' 'true';
#允许请求的方法,比如 GET/POST/PUT/DELETE
add_header 'Access-Control-Allow-Methods' *;
#允许请求的header
add_header 'Access-Control-Allow-Headers' *;
4、Nginx 防盗链配置支持
#对源站点验证
valid_referers *.xieqingxin.com;
#非法引入会进入下方判断
if ($invalid_referer) {
return 404;
}
5、upstream 指令参数 max_conns
限制每台 server 的连接数,用于保护避免过载,可起到限流作用
worker 进程设置1个,便于测试观察成功的连接数
worker_processes 1;
upstream tomcats {
server 192.168.1.173:8080 max_conns=2;
server 192.168.1.174:8080 max_conns=2;
server 192.168.1.175:8080 max_conns=2;
}
6、upstream 指令参数 slow_start
商业版,需要费
upstream tomcats {
server 192.168.1.173:8080
weight=6 slow_start=60s;
#server 192.168.1.190:8080;
server 192.168.1.174:8080 weight=2;
server 192.168.1.175:8080 weight=2;
}
该参数不能使用在 hash 和 random load balancing 中
如果在 upstream 中只有一台 server,则该参数失效。
7、upstream 指令参数 down、 backup
7.1、down 用于标记服务节点不可用
upstream tomcats {
server 192.168.1.173:8080 down;
#server 192.168.1.190:8080;
server 192.168.1.174:8080 weight=1;
server 192.168.1.175:8080 weight=1;
}
7.2、backup 表示当前服务器节点是备用机,只有在其他的服务器都宕机以后,自己才会加入到集群中,被用户访问到
upstream tomcats {
server 192.168.1.173:8080 backup;
#server 192.168.1.190:8080;
server 192.168.1.174:8080 weight=1;
server 192.168.1.175:8080 weight=1;
}
backup 参数不能使用在 hash 和 random load balancing 中。
8、upstream 指令参数 max_fails、 fail_timeout
max_fails:表示失败几次,则标记 server 已宕机,剔出上游服务。
fail_timeout:表示失败的重试时间
假设目前设置如下
max_fails=2 fail_timeout=15s
代表在15秒内请求某一 server 失败达到2次后,则认为该 server 已经挂了或者宕机了,随后再过15秒
这15秒内不会有新的请求到达刚刚挂掉的节点上,而是会请求到正常运作的 server,15 秒后会再有新请求
尝试连接挂掉的 server,如果还是失败,重复上一过程,直到恢复。
9、Nginx 的缓存
1、浏览器缓存
加速用户访问,提升单个用户(浏览器访问者)体验,缓存在本地
2、Nginx 缓存
缓存在 nginc 端,提升所有访问到 nginx 这一端的用户提升访问上游 (upstream) 服务器的速度,用户访问仍然会产生请求流量
2.1、控制浏览器缓存
location /files {
alias /home/files;
#expires 10s;
#expires @22h30m;
#expires -1h;
#expires epoch;
#expires off;
expires max;
}
<html>
<body>
<h1>
Hello, Nginx ~ !~
</h1>
</body>
</html>
10、Nginx 的反向代理缓存
#proxy_cache_path 设置缓存目录
#keys_zone 设置共享内存以及占用空间大小
#max_size 设置缓存大小
#inactive 超过此时间则被清理
#use_temp_path 临时目录,使用后会影响 nginx 性能
proxy_cache_path /usr/local/nginx/upstream_cache keys_zone=mycache:5m max_size=1g inactive=1m use_temp_path=off;
location / {
proxy_pass http://tomcats;
#启用缓存,和 keys_zone 一致
proxy_cache mycache;
#针对 200 和 304 状态码缓存时间为8小时
proxy_cache_valid 200 304 8h;
}
11、使用 Nginx 配置 Https 域名证书
1、安装 SSL 模块
要在 nginx 中配置 https 就必须安装ss模块,也就是 http_ssl_module
1.1、进入到 nginx 的解压目录: /home/software/nginx-1.16.1
1.2、新增模块(原来的那些模块需要保留)
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--with-http_ssl_module
1.3 编译和安装
make
make install
2、配置 Https
2.1、把 ssl 证书 *.crt 和私钥 *.key 拷贝到 /usr/local/nginx.conf 目录中
2.2、新增 server 监听 443 端口
server {
listen 443;
server_name blog.xieqingxin.com;
# 开启 ssl
ssl on;
# 配置 ssl 证书
ssl_certificate 1_blog.xieqingxin.com_bundle.crt;
# 配置证书秘钥
ssl_certificate_key 2_blog.xieqingxin.com.key;
# ssl会话cache
ssl_session_cache shared:SSL:1m;
# ssl会话超时时间
ssl_session_timeout 5m;
# 配置加密套件,写法遵循 openssl 标准
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://tomcats/;
index index.html index.htm;
}
}
3、reload nginx
./nginx -s reload
12、负载均衡 url_hash与 least_conn
根据每次请求的 url 地址, hash 后访问到固定的服务器节点
upstream tomcats {
# url hash
hash $request_uri;
# 最少连接数
# least_conn
server 192.168.1.173:8080;
server 192.168.1.174:8080;
server 192.168.1.175:8080;
}
server {
listen 80;
server_name www.tomcats.com;
location / {
proxy_pass http://tomcats;
}
}
13、负载均衡 ip_hash
ip_hash 可以保证用户访问可以请求到上游服务中的固定的服务器,前提是用户 ip 没有发生更改。
使用 ip_hash 的注意点
不能把后台服务器直接移除,只能标记 down
upstream tomcats {
ip_hash;
server 192.168.1.173:8080;
server 192.168.1.174:8080 down;
server 192.168.1.175:8080;
}
14、Keepalived 提高吞吐量
1、keepalived:设置长连接处理的数量
2、proxy_http_version:设置长连接htp版本为1.1
3、proxy_set_header:清除 connection header 信息
upstream tomcats {
#erver 192.168.1.173:8080 max_fails=2 fail_timeout=1s;
server 192.168.1.190:8080;
#server 192.168.1.174:8080 weight=1;
#server 192.168.1.175:8080 weight=1; keepalive 32;
}
server {
listen 80;
server_name www.tomcats.com;
location / {
proxy_pass http://tomcats;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
评论区