侧边栏壁纸
博主头像
阿里灰太狼博主等级

You have to believe in yourself . That's the secret of success.

  • 累计撰写 104 篇文章
  • 累计创建 50 个标签
  • 累计收到 12 条评论

目 录CONTENT

文章目录

Nginx 各类配置

阿里灰太狼
2022-02-08 / 0 评论 / 2 点赞 / 422 阅读 / 4,709 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-02-10,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

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 "";        

	}   

}
2

评论区