nginx(四、配置反向代理、负载均衡、https)

/etc/nginx/nginx.conf

user  root;

#设置成cpu核数
worker_processes  4;

#日志级别设置为error
error_log  /var/log/nginx/error.log error;
pid        /var/run/nginx.pid;

#填写linux的最大文件句柄数
worker_rlimit_nofile 1048576;

events {
    worker_connections  40000;
    multi_accept on;
    
    #off 每次有新连接则激活所有worker,适用大访问量
    #on  每次有新连接则激活1个worker,是系统默认配置
    accept_mutex off;
    use epoll;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    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 off
    access_log  /var/log/nginx/access.log  main;
    
    
    #on  对于普通应用,零拷贝输出文件提升效率
    #off 对于下载等磁盘IO重负载应用,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
    sendfile        on;
    
    #tcp_nopush 和 tcp_nodelay是互斥的,只用指定1个即可且仅在sendfile为on时生效。
    #nopush  存入缓存等数据达到一定数量后发送,节约数据包和流量
    #nodelay 就算只有1个字节也立即发送,可能会阻塞网络,但提高响应速度
    #tcp_nopush     on;
    #tcp_nodelay    off;
    
    keepalive_timeout  65;

    #limit模块,可防范一定量的DDOS攻击
    #存储session状态,为session分配一个名为one的10M的内存存储区,限制每秒只接受1个ip的20次请求 20r/s
    limit_req_zone $binary_remote_addr zone=one:10m rate=20r/s;
    limit_conn_zone $binary_remote_addr zone=addr:10m;

    include /etc/nginx/conf.d/*.conf;
}

/etc/nginx/conf.d/myconfig.conf

#压缩数据流,有gzip_static_module模块可以预压缩,主要针对静态资源,有需求可以去了解一下
gzip        on;
#压缩大于1K的数据
gzip_min_length     1k;
gzip_buffers        16 64k;
#末端通信HTTP/1.0,默认1.1
#gzip_http_version      1.0;
#压缩级别1-10数字越大压缩的越好时间越长
gzip_comp_level     3;
#进行压缩的文件类型
gzip_types      text/plain application/javascript application/x-javascript text/css application/xml text/javascript image/jpeg image/gif image/png image/jpg;
#根据客户端的HTTP头来判断是否需要压缩
gzip_vary       on;
#IE6不压缩
gzip_disable        "MSIE [1-6]\.";


#负载均衡
#静态服务器
upstream static_server{
    #这里可以在91服务器上起一个nginx监听8800端口专门做静态服务器,也可以起apache.
    #但我的静态资源放在本机上,所以这里用不到,下面只会配置location
    server 192.168.1.91:8800;
}

#动态服务器
upstream anfa_server{
    #weigth: 权值,权值越高被分配到的几率越大,默认是1.
    #down  : 当前server已停用
    #backup:当前server是备用服务器,只有其它非backup后端服务器都挂掉了或者很忙才会分配到请求
    #max_fails,fail_timeout: 
    #一般会关联使用,如果某台server在fail_timeout时间内出现了max_fails次连接失败,
    #那么Nginx会认为其已经挂掉了,从而在fail_timeout时间内不再去请求它,
    #fail_timeout默认是10s,max_fails默认是1,即默认情况是只要发生错误就认为服务器挂掉了,
    #如果将max_fails设置为0,则表示取消这项检查。server 192.168.1.82:9900 max_fails=1 fail_timeout=10s;
    
    server 192.168.1.82:9900 weight=1;
    server 192.168.1.82:9901 weight=1;
    
    #每个请求按照客户端IP的hash结果分配,客户端固定访问一个后端服务器,可以解决session一致问题
    #ip_hash;
    
    #按照后端服务器的响应时间分配请求,响应时间短优先分配
    #fair;
    
    #按照访问url的hash结果来分配,每个url定向到同一个服务器,主要应用于后端服务器为缓存时的场景下
    #此时,server语句中不能加weight等参数
    #hash $request_uri;
    #hash_method crc32;
    
    #keepalive可以简单的理解为连接池,要想启用需要在location作用域里配置proxy_http_version 1.1;和proxy_set_header Connection "";
    #官方示例如下 
    #location /http/ {
    #    proxy_pass http://http_backend;
    #    proxy_http_version 1.1;
    #    proxy_set_header Connection "";
    #    ...
    #}
    #这个值既不是越大越好也不是越小也好,具体参考https://sq.163yun.com/blog/article/190166026325086208
    keepalive 32;
}

charset utf-8;
proxy_cache_path proxy_cache_image levels=1:2 keys_zone=cache_image:100m;

server {
    listen       9888;
    
    #https相关
    #ssl on;
    #ssl_certificate /home/server/cert/server.crt;#服务的证书
    #ssl_certificate_key /home/server/cert/server.key;#服务端key
    
    #识别路径,同一个端口配置不同的server_name则会匹配到不同的配置
    server_name  localhost;
    
    #不区分大小写匹配括号内文件,由于我的静态文件在本地,所以注释掉
    #location ~* .(js|css|ico|png|jpg|eot|svg|ttf|woff) {
    #   #设置静态资源代理
    #   proxy_pass http://static_server;
    #   proxy_cache cache_image;
    #   proxy_cache_valid 200 304 302 5d;
    #   proxy_cache_valid any 5d;
    #   proxy_cache_key '$host:$server_port$request_uri';
    #   add_header X-Cache '$upstream_cache_status from $host';
    #   expires 30d; #让客户端缓存30天
    #}

    #不区分大小写,匹配
    location ~* /myurl {
        #设置静态资源直接从硬盘读取
        root  /home/server/static_content;
        index index.html app.html;
        expires 30d; #让客户端缓存30天
    }
 
    #反向代理到动态服务器
    location /tomcat/ {
        #设置代理,和upstream的名字一样
        proxy_pass   http://anfa_server;
        proxy_redirect             off; 
        proxy_set_header           Host $host; 
        #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
        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      65; #nginx跟后端服务器连接超时时间(代理连接超时)
        proxy_send_timeout         65; #后端服务器数据回传时间(代理发送超时)
        proxy_read_timeout         65; #连接成功后,后端服务器响应时间(代理接收超时)
        proxy_buffer_size          4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
        proxy_buffers              4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
        proxy_busy_buffers_size    64k; #高负荷下缓冲大小(proxy_buffers*2)
        
        #让keepalive起作用
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        
        #缓存配置
        proxy_temp_file_write_size 128k;#设定缓存文件夹大小,大于这个值,将从upstream服务器传
    }
    
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

这个配置就不过多解释了,都在注释里,需要说明的是关于https的证书制作

[root@centos]# openssl genrsa -des3 -out server.key 1024
[root@centos]# openssl req -new -key server.key -out server.csr
[root@centos]# cp server.key server.key.org
[root@centos]# openssl rsa -in server.key.org -out server.key
[root@centos]# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容