nginx做缓存服务器、代理、文件服务器等笔记
nginx笔记
nginx 做缓存服务器
一、安装nginx
yum install -y nginx
二、修改nginx配置
1.主配置/etc/nginx/nginx.conf
worker_processes 1;
events {worker_connections 1024;
}
http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log logs/access.log main;include /etc/nginx/conf.d/*.conf;#include proxy.conf;#include upstrem.conf;#include blog.biglittleant.cn.conf;server {listen 80;server_name localhost;error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}
}
2.proxy配置/etc/nginx/conf.d/proxy.conf
proxy_temp_path /data/cdn_cache/proxy_temp_dir;
proxy_cache_path /data/cdn_cache/proxy_cache_dir levels=1:2 keys_zone=cache_one:50m inactive=1d max_size=1g;
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_404;
参数解释:
proxy_cache_path: 缓存文件路径
levels: 设置缓存文件目录层次;levels=1:2 表示两级目录
keys_zone: 设置缓存名字和共享内存大小
inactive: 在指定时间内没人访问则被删除
max_size: 最大缓存空间,如果缓存空间满,默认覆盖掉缓存时间最长的资源。每一个proxy_cache_path对应一个ngx_http_file_cache_t结构体。
proxy_cache tmp-test: 使用名为tmp-test的缓存配置
proxy_cache_key $uri :定义缓存唯一key,通过唯一key来进行hash存取
proxy_cache_methods :设置缓存哪些HTTP方法
proxy_cache_min_uses :指定请求至少被发送了多少次以上时才缓存,可以防止低频请求被缓存
proxy_cache_bypass :如果指定的任何一个变量值不为空,或者不等于0,nginx就不会查找缓存,直接进行代理转发
proxy_cache_lock/proxy_cache_lock_timeout: 当多个客户端同时请求同一份内容时,如果开启proxy_cache_lock(默认off)则只有一个请求被发送至后端;其他请求将等待该内容返回;当第一个请求返回时,其他请求将从缓存中获取内容返回;当第一个请求超过了proxy_cache_lock_timeout超时时间(默认5s),则其他请求将同时请求到后端来获取响应,且响应不会被缓存;启用proxy_cache_lock可以应对雪崩效应。
3.upstream配置/etc/nginx/conf.d/upstream.conf
upstream blog.test.cn
{server 47.75.246.12:80 weight=10 max_fails=3;
}
4.blog.test.cn配置/etc/nginx/conf.d/blog.test.cn.conf
server
{listen 80;server_name blog.test.cn;access_log logs/blog.biglittleant.cn-access.log main;location ~ .*\.(gif|jpg|png|html|htm|css|js|ico|swf|pdf|txt)${#Proxyproxy_redirect off;proxy_next_upstream http_502 http_504 http_404 error timeout invalid_header;proxy_set_header Host $host;proxy_set_header X-real-ip $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://blog.test.cn;#Use Proxy Cacheproxy_cache cache_one;proxy_cache_key "$host$request_uri";add_header Cache "$upstream_cache_status";proxy_cache_valid 200 304 301 302 8h;proxy_cache_valid 404 1m;proxy_cache_valid any 2d;}location /{proxy_redirect off;proxy_next_upstream http_502 http_504 http_404 error timeout invalid_header;proxy_set_header Host $host;proxy_set_header X-real-ip $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://blog.test.cn;client_max_body_size 40m;client_body_buffer_size 128k;proxy_connect_timeout 60;proxy_send_timeout 60;proxy_read_timeout 60;proxy_buffer_size 64k;proxy_buffers 4 32k;proxy_busy_buffers_size 64k;}
}
新建存储目录:
mkdir -p /data/cdn_cache
注意:启动nginx会多出两个cache的进程。
第一次请求资源会先从源服务下载在nginx上,再返回给客户端。第二次请求相同资源时直接从nginx返回给客户端。
nginx做文件下载服务器
一、安装nginx
yum install -y nginx
二、修改配置文件/etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {worker_connections 1024;
}
http {log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;types_hash_max_size 2048;include /etc/nginx/mime.types;default_type application/octet-stream;# Load modular configuration files from the /etc/nginx/conf.d directory.# See http://nginx.org/en/docs/ngx_core_module.html#include# for more information.include /etc/nginx/conf.d/*.conf;server {listen 80 default_server;listen [::]:80 default_server;server_name _;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;location / {root /usr/share/nginx/html/download;autoindex on; #开启索引功能autoindex_exact_size off; #关闭计算文件确切大小(单位bytes),只显示大概大小(单位kb、mb、gb)autoindex_localtime on; #显示本机时间而非 GMT 时间}error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}
}
三、创建下载路径/usr/share/nginx/html/download
mkdir -p /usr/share/nginx/html/download
四、上传文件并授权755
五、浏览器打开ngixn地址就可以愉快的下载了!!!
如果需要通过账号密码验证下载文件
cd /etc/nginx/conf.d/
#创建密码文件和用户密码
htpasswd -c .htpasswd zskybio
配置文件增加
location /sdjd {#编码设置为UTF-8,不然中文文件名乱码charset utf-8;alias /opt/shendujindiao/;index index.html index.htm;#列表autoindex on;#隐藏真实大小,以M或G显示autoindex_exact_size off;#显示时间autoindex_localtime on;#设置密码文件auth_basic "input you user name and password";auth_basic_user_file /etc/nginx/conf.d/.htpasswd;}
重新加载服务
nginx -t
nginx -s reload
nginx做反向代理
一、安装nginx
yum install -y nginx
二、修改配置文件/etc/nginx/nginx.conf
#user nobody;
worker_processes 1;error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024;
}http {#正向代理server {#正向代理的端口listen 9080;#dns,支持配置多个resolver 119.29.29.29;#开启插件支持https tunnel#proxy_connect;#proxy_connect_allow 443;#proxy_connect_connect_timeout 10s;#proxy_connect_read_timeout 40s;#proxy_connect_send_timeout 40s;#location / {# proxy_pass http://$host;# proxy_set_header Host $host;# proxy_buffers 256 4k;# proxy_max_temp_file_size 0;#}}#反向代理上游服务器-反向代理tpp-zuul-pre,支持配置多个upstream srv_tpp-zuul-pre {ip_hash;server 172.168.168.108:80;server 172.168.168.114:80;}#反向代理server {listen 8080;listen 443 ssl;#ssl on;ssl_certificate 1613208__hcepay.com.pem;ssl_certificate_key 1613208__hcepay.com.key;ssl_session_timeout 5m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;server_name 127.0.0.1;location / {proxy_pass http://srv_tpp-zuul-pre;}}upstream srv_fama {ip_hash; server 172.168.168.112:8080;server 172.168.168.119:8080;}server {listen 8081;server_name 127.0.0.1;location / {proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;proxy_pass http://srv_fama;}}upstream srv_acc-pre {ip_hash; server 172.168.168.107:8764;server 172.168.168.113:8764;}server {listen 8764;server_name 127.0.0.1;location / {proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;proxy_pass http://srv_acc-pre;}} upstream srv_redis {ip_hash; server 172.168.168.119:7000;server 172.168.168.119:7001;server 172.168.168.119:7002;server 172.168.168.119:7003;server 172.168.168.119:7004;server 172.168.168.119:7005;}server {listen 6379;server_name 127.0.0.1;location / {proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;proxy_pass http://srv_redis;}}
}
#TCP方向代理
tcp {upstream srv_tpp-webgate {ip_hash;server 172.168.168.108:5001;server 172.168.168.114:5001;check interval=3000 rise=2 fall=5 timeout=1000;}server {listen 5001;proxy_pass srv_tpp-webgate;tcp_nodelay on;}}
proxy模块指令描述
proxy模块的可用配置指令非常多,它们分别用于定义proxy模块工作时的诸多属性,如连接超时时长、代理时使用http协议版本等。下面对常用的指令做一个简单说明。
- proxy_connect_timeout nginx将一个请求发送至upstream server之前等待的最大时长;
- proxy_cookie_domain 将upstream server通过Set-Cookie首部设定的domain属性修改为指定的值,其值可以为一个字符串、正则表达式的模式或一个引用的变量;
- proxy_cookie_path 将upstream server通过Set-Cookie首部设定的path属性修改为指定的值,其值可以为一个字符串、正则表达式的模式或一个引用的变量;
- proxy_hide_header 设定发送给客户端的报文中需要隐藏的首部;
- proxy_pass 指定将请求代理至upstream server的URL路径;
- proxy_set_header 将发送至upsream server的报文的某首部进行重写;
- proxy_redirect 重写location并刷新从upstream server收到的报文的首部;
- proxy_send_timeout 在连接断开之前两次发送至upstream server的写操作的最大间隔时长;
- proxy_read_timeout 在连接断开之前两次从接收upstream server接收读操作的最大间隔时长;
如下面的一个示例:
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 30;
proxy_send_timeout 15;
proxy_read_timeout 15;
nginx负载均衡策略
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream backserver {
server 192.168.0.14;
server 192.168.0.15;
}
2、指定权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream backserver {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
3、IP绑定 ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream backserver {
server server1;
server server2;
fair;
}
5、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
在需要使用负载均衡的server中增加
proxy_pass http://backserver/;
upstream backserver{
ip_hash;
server 127.0.0.1:9090 down; (down 表示单前的server暂时不参与负载)
server 127.0.0.1:8080 weight=2; (weight 默认为1.weight越大,负载的权重就越大)
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器)
}
max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
fail_timeout:max_fails次失败后,暂停的时间
nginx500错误
在需要使用负载均衡的server中增加
proxy_pass http://backserver/;
upstream backserver{
ip_hash;
server 127.0.0.1:9090 down; (down 表示单前的server暂时不参与负载)
server 127.0.0.1:8080 weight=2; (weight 默认为1.weight越大,负载的权重就越大)
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器)
}
max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
fail_timeout:max_fails次失败后,暂停的时间
nginx500错误
[外链图片转存中…(img-mMHAi2Z3-1594631525459)]
nginx做缓存服务器、代理、文件服务器等笔记相关推荐
- Nginx做缓存服务器
Nginx做缓存服务器 Nginx配置 1.主配置/etc/nginx/nginx.conf 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ...
- nginx做为反向代理实现负载均衡的例子 .
我们介绍了nginx这个轻量级的高性能server主要可以干的两件事情: >直接作为http server(代替apache,对PHP需要FastCGI处理器支持,这个我们之后介绍): > ...
- 不能忽略的Nginx做web服务器的favicon.ico图像找不到问题
我们在使用Nginx搭建HTTP的web server的过程中,一般都很顺利,默认的网站根目录一般是/usr/local/nginx/html,我们也可以正常访问到Nginx的欢迎信息,比如使用下面的 ...
- 利用memcached做缓存服务器,为后端tomcat服务器做会话保持,利用httpd的jk模块模块做负载均衡...
前端使用httpd作为反代负载均衡至后端tomcat主机:tomcat可用memcached当做会话服务器保存会话: 实验环境:物理机win7,虚拟机centos7 node1:172.18.11.1 ...
- 为什么我推荐Nginx作为后端服务器代理
1. 前言 我们真实的服务器不应该直接暴露到公网上去,否则更加容易泄露服务器的信息,也更加容易受到攻击.一个比较"平民化"的方案是使用Nginx反向代理它.今天就来聊一聊使用Ngi ...
- Nginx做图片服务器
前言: Nginx是一个高性能的HTTP和反向代理web服务器,以及负载均衡器.根据nginx是高性能的http服务器,因此可以用作图片服务器使用. 本案例是在docker安装nginx来操作的. N ...
- 试验thrift做后端rpc,nginx做web服务器, python后端php前端
因为后端的服务很负责,训练的模型都是基于python的tensorflow的,所以用RPC(remote procedual comminication): 接口用的是php写的,方便http协议调用 ...
- nginx 做上网服务代理配置
在nginx.conf中加一项 #代理上网 server { resolver 223.6.6.6; listen 82; location ...
- 自建cdn服务器 linux,Linux下使用Nginx做CDN服务器下的配置
由于使用docker配置Nginx比较方便,所以博主就使用docker做为容器配置下 第一步.配置docker-compose.yml文件 version: '3 services: nginx: r ...
最新文章
- cannot import name filter
- 分析时间复杂度和空间复杂度(一级)
- surefire单元测试 并发 提速
- ondestroy什么时候调用_JavaScript基础——你真的清楚JavaScript是什么吗?
- golang 判断map的键key是否存在
- 关于umask函数和creat函数
- linux双网卡连不上网,linux 双网卡配置问题
- 容联云(第三方短信发送)
- 前端项目中代码格式化配置:eslint + prettier + stylelint + pre-commit
- 保姆式RecyclerView下拉刷新、上拉加载更多Kotlin
- 基于微信小程序的汽车租赁系统源码
- hbuildx打包 vue3项目成apk
- Tencent后台开发Java岗二面:Java中高级核心知识全面解析
- GK Summay算法(ϵ−approximate ϕ−quantile)
- debian重启ssh服务_EUserv 德国永久免费VPS申请,仅有IPv6网络 另附IPv6服务器建站教程...
- ASP第一章IIS发布站点
- SpringCloud微服务-----skywalking链路追踪
- MySQL如何保证高可用
- matlab 突破交易策略,Matlab量化交易策略之 横盘突破策略(附源码)
- 软件开发常用术语检索语
热门文章
- 会声会影和pr到底哪个好,2023年要学那个视频剪辑软件好?
- Electron教程 (一)Electron介绍
- 主板调速风扇电路设计
- C++利用stringstream实现字符串分割和输入
- 单词2016.8.3
- 蓝桥杯各模块使用总结 时钟DS1302 ,ADC DAC PCF8591 ,温度传感器DS18B20 存储AT24C02
- 文心一言 VS 讯飞星火 VS chatgpt (19)-- go语言的slice和rust语言的Vec的扩容流程是什么?
- Java实现客户信息管理软件
- 名企实习学历受限吗?IT名企实习看实力还是学历
- 疑似1.59亿LinkedIn领英客户数据库正在以99美元的价格被售卖