Nginx场景应用技术分享
程序员文章站
2022-05-21 21:07:12
...
本文主要和大家分享Nginx场景应用技术希望能帮助到大家。
Nginx作为静态资源web服务
配置上下文:http、server或location。
可能涉及到,资源压缩、跨域访问、防盗链等场景。
资源压缩配置的上下文:http、server或location
跨域配置的上下文:http、server或location
防盗链配置的上下文:server、location
配置参考
vi /etc/nginx/conf.d/default.conf
server {
...
# 开启sendfile,提高网络包的传输效率
sendfile on;
# 配置图片资源的存放路径及压缩方式
location ~ .*\.(jpg|gif|png)$ {
gzip on;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
# 图片防盗链配置
# 不指定referer 协议不正确 放行指定IP 放行SEO优化
valid_referers none blocked 39.104.116.91 ~/google\./;
if ($invalid_referer) {
return 403;
}
root /opt/app/code/images;
}
# 配置txt|xml资源的存放路径及压缩方式
location ~ .*\.(txt|xml)$ {
gzip on;
gzip_http_version 1.1;
gzip_comp_level 1;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
root /opt/app/code/doc;
}
# 缓存与跨域场景配置
location ~ .*\.(html|htm)$ {
#给返回报文添加Cache-Control、Expires头,控制缓存
#expires 24h;
#允许跨域到指定域
add_header Access-Control-Allow-Origin http://somehost.com;
add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
root /opt/app/code;
}
}
Nginx作为代理服务
正向代理
正向代理即客户端代理。客户端通过设置代理服务器,从而达到对目标地址的访问需求。
Nginx可以充当这个代理服务器
配置参考
vi /etc/nginx/conf.d/default.conf
server {
...
# 可能会涉及到DNS域名解析
resolver 8.8.8.8;
location / {
# 原封不动的让自己转发客户端的请求
proxy_pass http://$http_host$request_uri;
}
}
反向代理
反向代理即服务端代理。对客户端隐藏真实服务器地址。
配置参考
vi /etc/nginx/conf.d/default.conf
server {
location / {
#Real Server地址
proxy_pass http://127.0.0.1:8080;
include proxy_params;
}
}
# 其他代理配置独立出去,方便复用
vi /etc/nginx/proxy_param
# default就可以了。除非返回301的场景,可能需要改写
proxy_redirect defalut;
#配置header信息,让Real Server了解实际客户端信息
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
#一些代理超时设置
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
#代理缓冲区设置
proxy_buffer_size 32k;
proxy_buffering on;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;
Nginx作为负载均衡服务
参考配置
vi /etc/nginx/conf.d/default.conf
upstream backend {
server 192.168.1.101:8001;
server 192.168.1.102:8002;
server 192.168.1.102:8003 down;
server 192.168.1.103:8004 backup;
}
server {
...
location / {
# 代理到upstream组
proxy_pass http://backend;
include proxy_params;
}
}
server额外参数
upstream组的server后面,支持加以下参数:
参数 | 说明 |
---|---|
down | 不参与负载均衡 |
backup | 预留的备份服务器。当没有其他节点提供服务时,它才提供服务 |
max_fails | 允许请求失败的次数 |
fail_timeout | 经过max_fails失败后,服务暂停的时间 |
max_conns | 限制最大接收的连接数 |
负载均衡调度算法
方式 | 说明 |
---|---|
轮询 | 按顺序逐一分配给不同的后端服务器 |
加权轮询 | weight值越大,分配到的几率越大 |
ip_hash | 同一IP固定访问同一个后端服务器 |
least_conn | 哪个连接数少就发哪个机器 |
url_hash | 按url参数的hash结果来分配 |
hash关键数值 | hash自定义的key |
# 加权轮询
upstream backend {
server 192.168.1.101:8001 weight=5;
server 192.168.1.102:8002;
server 192.168.1.102:8003 down;
server 192.168.1.103:8004 backup;
}
# IP HASH
upstream backend {
ip_hash;
server 192.168.1.101:8001;
server 192.168.1.102:8002;
server 192.168.1.102:8003 down;
server 192.168.1.103:8004 backup;
}
# 最少连接数
upstream backend {
least_conn;
server 192.168.1.101:8001;
server 192.168.1.102:8002;
server 192.168.1.102:8003 down;
server 192.168.1.103:8004 backup;
}
# URL HASH
upstream backend {
url_hash;
server 192.168.1.101:8001;
server 192.168.1.102:8002;
server 192.168.1.102:8003 down;
server 192.168.1.103:8004 backup;
相关推荐:
以上就是Nginx场景应用技术分享的详细内容,更多请关注其它相关文章!