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做缓存服务器、代理、文件服务器等笔记相关推荐

  1. 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 ...

  2. nginx做为反向代理实现负载均衡的例子 .

    我们介绍了nginx这个轻量级的高性能server主要可以干的两件事情: >直接作为http server(代替apache,对PHP需要FastCGI处理器支持,这个我们之后介绍): > ...

  3. 不能忽略的Nginx做web服务器的favicon.ico图像找不到问题

    我们在使用Nginx搭建HTTP的web server的过程中,一般都很顺利,默认的网站根目录一般是/usr/local/nginx/html,我们也可以正常访问到Nginx的欢迎信息,比如使用下面的 ...

  4. 利用memcached做缓存服务器,为后端tomcat服务器做会话保持,利用httpd的jk模块模块做负载均衡...

    前端使用httpd作为反代负载均衡至后端tomcat主机:tomcat可用memcached当做会话服务器保存会话: 实验环境:物理机win7,虚拟机centos7 node1:172.18.11.1 ...

  5. 为什么我推荐Nginx作为后端服务器代理

    1. 前言 我们真实的服务器不应该直接暴露到公网上去,否则更加容易泄露服务器的信息,也更加容易受到攻击.一个比较"平民化"的方案是使用Nginx反向代理它.今天就来聊一聊使用Ngi ...

  6. Nginx做图片服务器

    前言: Nginx是一个高性能的HTTP和反向代理web服务器,以及负载均衡器.根据nginx是高性能的http服务器,因此可以用作图片服务器使用. 本案例是在docker安装nginx来操作的. N ...

  7. 试验thrift做后端rpc,nginx做web服务器, python后端php前端

    因为后端的服务很负责,训练的模型都是基于python的tensorflow的,所以用RPC(remote procedual comminication): 接口用的是php写的,方便http协议调用 ...

  8. nginx 做上网服务代理配置

    在nginx.conf中加一项 #代理上网    server    {         resolver 223.6.6.6;         listen 82;         location ...

  9. 自建cdn服务器 linux,Linux下使用Nginx做CDN服务器下的配置

    由于使用docker配置Nginx比较方便,所以博主就使用docker做为容器配置下 第一步.配置docker-compose.yml文件 version: '3 services: nginx: r ...

最新文章

  1. cannot import name filter
  2. 分析时间复杂度和空间复杂度(一级)
  3. surefire单元测试 并发 提速
  4. ondestroy什么时候调用_JavaScript基础——你真的清楚JavaScript是什么吗?
  5. golang 判断map的键key是否存在
  6. 关于umask函数和creat函数
  7. linux双网卡连不上网,linux 双网卡配置问题
  8. 容联云(第三方短信发送)
  9. 前端项目中代码格式化配置:eslint + prettier + stylelint + pre-commit
  10. 保姆式RecyclerView下拉刷新、上拉加载更多Kotlin
  11. 基于微信小程序的汽车租赁系统源码
  12. hbuildx打包 vue3项目成apk
  13. Tencent后台开发Java岗二面:Java中高级核心知识全面解析
  14. GK Summay算法(ϵ−approximate ϕ−quantile)
  15. debian重启ssh服务_EUserv 德国永久免费VPS申请,仅有IPv6网络 另附IPv6服务器建站教程...
  16. ASP第一章IIS发布站点
  17. SpringCloud微服务-----skywalking链路追踪
  18. MySQL如何保证高可用
  19. matlab 突破交易策略,Matlab量化交易策略之 横盘突破策略(附源码)
  20. 软件开发常用术语检索语

热门文章

  1. 会声会影和pr到底哪个好,2023年要学那个视频剪辑软件好?
  2. Electron教程 (一)Electron介绍
  3. 主板调速风扇电路设计
  4. C++利用stringstream实现字符串分割和输入
  5. 单词2016.8.3
  6. 蓝桥杯各模块使用总结 时钟DS1302 ,ADC DAC PCF8591 ,温度传感器DS18B20 存储AT24C02
  7. 文心一言 VS 讯飞星火 VS chatgpt (19)-- go语言的slice和rust语言的Vec的扩容流程是什么?
  8. Java实现客户信息管理软件
  9. 名企实习学历受限吗?IT名企实习看实力还是学历
  10. 疑似1.59亿LinkedIn领英客户数据库正在以99美元的价格被售卖