博客nginx配置

博客nginx配置

philo-尼可 323 2020-10-21

Nginx 事件处理模型

events {
    use epoll;
    worker_connections 1024;
    multi_accept on;
}

nginx采用epoll事件模型,处理效率高。

work_connections是单个worker进程允许客户端最大连接数,这个数值一般根据服务器性能和内存来制定,实际最大值就是worker进程数乘以work_connections。

实际我们填入一个65535,足够了,这些都算并发值,一个网站的并发达到这么大的数量,也算一个大站了!

multi_accept 告诉nginx收到一个新连接通知后接受尽可能多的连接,默认是on。

HTTP 段配置

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;
    server_tokens off;
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    server_names_hash_bucket_size 128;
    client_header_buffer_size 2k;
    large_client_header_buffers 4 4k;
    client_max_body_size 8m;

    gzip on;
    gzip_min_length   2k;
    gzip_buffers     4 32k;
    gzip_http_version 1.0;
    gzip_comp_level 6;
    gzip_types       text/plain application/x-javascript text/css application/xml;
    gzip_proxied any; 
    gzip_vary on;
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

server_tokens off:隐藏response header里面的nginx版本。

sendfile on:开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。

tcp_nopush on:必须在sendfile开启模式才有效,防止网路阻塞,积极的减少网络报文段的数量(将响应头和正文的开始部分一起发送,而不一个接一个的发送。)

gzip on:开启gzip压缩功能,可以为我们节约带宽,加快传输速度,有更好的体验,也为我们节约成本。Nginx启用压缩功能需要依赖ngx_http_gzip_module模块

gzip_min_length 1k :设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取,默认值是0,不管页面多大都进行压缩,建议设置成大于1K,如果小与1K可能会越压越大。

gzip_buffers 4 32k :压缩缓冲区大小,表示申请4个单位为32K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。

gzip_http_version 1.1 :压缩版本,用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可。

gzip_comp_level 6 :压缩比例,用来指定GZIP压缩比,1压缩比最小,处理速度最快,9压缩比最大,传输速度快,但是处理慢,也比较消耗CPU资源。

gzip_types text/css text/xml application/javascript :用来指定压缩的类型,‘text/html’类型总是会被压缩。默认值: gzip_types text/html (默认不对js/css文件进行压缩)

压缩类型,匹配MIME型进行压缩;

不能用通配符 text/*;

text/html默认已经压缩 (无论是否指定);

设置哪压缩种文本文件可参考 conf/mime.types。

gzip_vary on :varyheader支持,改选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过nginx压缩的数据。

Include mime.types : 媒体类型,include 只是一个在当前文件中包含另一个文件内容的指令。

default_type application/octet-stream :默认媒体类型足够。


server 配置

只能有一个default_server,监听80端口,,转发到https 443端口

server {
        listen       80 default_server;
        server_name  *.20190616.xyz;
        rewrite ^(.*)$ https://$host$1 permanent;
    }

博客转发到blog

server {
        listen       443 ssl http2;
        server_name   blog.20190616.xyz;
        ssl_certificate /etc/letsencrypt/live/20190616.xyz/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/20190616.xyz/privkey.pem;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 1440m;
        ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
        ssl_prefer_server_ciphers on;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        ssl_stapling on;
        ssl_stapling_verify on;

        # Load configuration files for the default server block.
        #include /etc/nginx/default.d/*.conf;

        location / {
            proxy_set_header   Host $host:$server_port;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Host $server_name;
            proxy_read_timeout  1200s;
            proxy_ssl_server_name on;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_buffer_size 128k;
            proxy_buffers 32 32k;
            proxy_busy_buffers_size 128k;
            proxy_pass http://127.0.0.1:22280;
        }
    }

# https # 证书 # halo # nginx # 阿里云