Nginx的配置文件nginx.conf配置详解

本文介绍了在Windows DOS环境下使用Nginx的常见命令,包括验证配置、查看版本、启动与停止Nginx,以及如何重载配置文件。同时讲解了如何使用openssl生成key和crt文件,并提供了Nginx配置文件nginx.conf的详细解析。
摘要由CSDN通过智能技术生成

windows DOS 下nginx 常用命令
验证配置是否正确: nginx -t
查看Nginx的版本号:nginx -V
启动Nginx:start nginx
快速停止或关闭Nginx:nginx -s stop
正常停止或关闭Nginx:nginx -s quit
配置文件修改重装载命令:nginx -s reload

HTTP2配置

工具openssl 生成key、crt
#openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout nginx.key -out nginx.crt

配置nginx

 server {
        listen       80;
        server_name  test.com;
        return 301 https://$server_name$request_uri;
  }
    server{
        listen       443 ssl http2;
        server_name  test.com;
        ssl_certificate nginx.crt;
        ssl_certificate_key nginx.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        #禁止在header中出现服务器版本,防止黑客利用版本漏洞攻击
        server_tokens off;
        #如果是全站 HTTPS 并且不考虑 HTTP 的话,可以加入 HSTS 告诉你的浏览器本网站全站加密,并且强制用 HTTPS 访问
        fastcgi_param   HTTPS               on;
        fastcgi_param   HTTP_SCHEME         https;
        access_log logs/api.test.com.log;
         location / {
        	proxy_pass http://127.0.0.1:3000/; #代理的网址
        }
    }

Nginx的配置文件nginx.conf配置详解如下:

user                  nginx nginx;    #定义Nginx运行的用户和用户组

worker_processes      1;              #nginx进程数,建议设置为等于CPU总核心数

worker_rlimit_nofile  1024;           #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致

error_log        /var/log/nginx/error.log info; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]

pid                   /var/log/nginx/nginx.pid; #进程文件 



#工作模式与连接数上限

events {
    use             epoll; #设置用于复用客户端线程的轮询方法,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll是多路复用IO(I/O  	Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
    worker_connections  1024;  #单个进程最大连接数(最大连接数=连接数*进程数)
    multi_accept        on;    #收到一个新连接通知后接受尽可能多的连接
}


#http服务器(详细参数:http://nginx.org/en/docs/http/ngx_http_core_module.html)

http {
    include           /etc/nginx/mime.types; #文件扩展名与文件类型映射表

    default_type      application/octet-stream; #默认文件类型

    access_log        off;   #访问日志。关闭这个选项可以让读取磁盘IO操作更快(aka,YOLO)

    charset           utf-8; #默认编码

    server_tokens     off;   #关闭在错误页面中的nginx版本数字,这样对于安全性是有好处的

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

    autoindex         off;   #开启目录列表访问,合适下载服务器,默认关闭

    tcp_nopush        on;    #在一个数据包里发送所有头文件,而不一个接一个的发送。防止网络阻塞

    tcp_nodelay       on;    #不缓存数据,而是一段一段的发送。当需要及时发送数据时,就应该给应用设置这个属性,这样发送一小块数据信息时就不能立即得到返回值。防止网络阻塞

    keepalive_timeout 120;   #长连接超时时间,单位是秒

    

    client_header_buffer_size    32k;   #客户请求头缓冲大小

    large_client_header_buffers  4 64k; #nginx默认会用 client_header_buffer_size 这个buffer来读取header值,如果header过大,它会使用 large_client_header_buffers 来读取

    client_max_body_size         8m;    #指定允许客户端连接的最大请求实体大小,它出现在请求头部的Content-Length字段

    open_file_cache              max=1000 inactive=20s; #缓存是否启用,如果启用,将记录文件以下信息: 打开的文件描述符、大小信息、修改时间、存在的目录信息、在搜索文件过程中的错误信息,max指定缓存的最大数目,如果缓存溢出,最长使用过的文件(LRU)将被移除

    open_file_cache_errors       on;    #是否在搜索一个文件是记录cache错误,默认值: off

    open_file_cache_min_uses     2;     #在open_file_cache指令无效的参数中一定的时间范围内可以使用的最小文件数,如果使用更大的值,文件描述符在cache中总是打开状态,默认值:1 

    open_file_cache_valid        30s;   #何时需要检查open_file_cache中缓存项目的有效信息。默认值:60s

   
    #FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能理解

    fastcgi_connect_timeout      300;

    fastcgi_send_timeout         300;

    fastcgi_read_timeout         300;

    fastcgi_buffer_size          64k;

    fastcgi_buffers              4 64k; 

    fastcgi_busy_buffers_size    128k;

    fastcgi_temp_file_write_size 128k;



    #gzip模块设置

    gzip            on;    #开启gzip压缩输出

    gzip_static     on;    #nginx对于静态文件的处理模块,该模块可以读取预先压缩的gz文件,这样可以减少每次请求进行gzip压缩的CPU资源消耗。该模块启用后,nginx首先检查是否存在请求静态文件的gz结尾的文件,如果有则直接返回该gz文件内容。为了要兼容不支持gzip的浏览器,启用gzip_static模块就必须同时保留原始静态文件和gz文件。这样的话,在有大量静态文件的情况下,将会大大增加磁盘空间。我们可以利用nginx的反向代理功能实现只保留gz文件。

    gzip_disable    "MSIE [1-6]\.(?!.*SV1)";    #禁用IE6的gzip压缩,IE6的某些版本对gzip的压缩支持很不好,会造成页面的假死

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

    gzip_buffers    4 16k; #压缩缓冲区,设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。4 16k代表以16k为单位,安装原始数据大小以16k为单位的4倍申请内存 。如果没有设置,默认值是申请跟原始数据相同大小的内存空间去存储gzip压缩结果

    gzip_comp_level 4;     #压缩级别 1-9,默认值:1(建议选择为4),级别越高压缩率越大,当然压缩时间也就越长(传输快但比较消耗cpu)

    gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; #压缩类型,匹配MIME类型进行压缩,设置哪压缩种文本文件可参考 conf/mime.types,(无论是否指定)text/html默认已经压缩,默认不对js/css文件进行压缩,不能用通配符 text/*

    gzip_proxied    off;    #作为反向代理的时候启用,开启或者关闭后端服务器返回的结果,匹配的前提是后端服务器必须要返回包含"Via"的 header头。

                            #默认值:off [off|expired|no-cache|no-store|private|no_last_modified|no_etag|auth|any]

                            #off - 关闭所有的代理结果数据的压缩

                            #expired - 启用压缩,如果header头中包含 "Expires" 头信息

                            #no-cache - 启用压缩,如果header头中包含 "Cache-Control:no-cache" 头信息

                            #no-store - 启用压缩,如果header头中包含 "Cache-Control:no-store" 头信息

                            #private - 启用压缩,如果header头中包含 "Cache-Control:private" 头信息

                            #no_last_modified - 启用压缩,如果header头中不包含 "Last-Modified" 头信息

                            #no_etag - 启用压缩 ,如果header头中不包含 "ETag" 头信息

                            #auth - 启用压缩 , 如果header头中包含 "Authorization" 头信息

                            #any - 无条件启用压缩

    gzip_vary       on;     #和http头有关系,加个vary头,给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩

    limit_zone      crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用

    #upstream的负载均衡

    upstream luyucheng {

        ip_hash; #每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题

        

        server 192.168.80.1:80 weight=1; #weigth参数表示权重,权重越高被分配到的几率越大

        server 192.168.80.2:80 down;     #down表示当前的server暂时不参与负载

        server 192.168.80.3:80 backup;   #当所有的非备机(non-backup)都宕机(down)或者繁忙(busy)的时候,就只使用由 backup 标注的备机。必须要注意的是,backup 不能和 ip_hash 关键字一起使用

        server 192.168.80.4:80 max_fails=3 fail_timeout=30s; #最大的重试次数,和重试时间间隔。最大失败次数为3,也就是最多进行3次尝试,且超时时间为30秒。max_fails的默认值为 1,fail_timeout的默认值是 10s。传输失败的情形,由proxy_next_upstream或fastcgi_next_upstream指定。而且可以使用proxy_connect_timeout和proxy_read_timeout控制upstream 响应时间。upstream中只有一个server时,max_fails和fail_timeout参数可能不会起作用

        

        fair; #按后端服务器的响应时间来分配请求,响应时间短的优先分配

        

        hash $request_uri; #按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。注意:在upstream中加入hash语句,server语句中不能写入weight等其他的参数

        hash_method crc32; #使用的hash算法

    }

    

    #虚拟主机的配置

    server {

        listen       80;

        server_name  luyucheng.cnblogs.com cnblogs.com; #域名可以有多个,用空格隔开

        index        index.html index.htm index.php;

        root         /www/cnblogs;

        

        #日志格式设定

        log_format    access '$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 access; #定义本虚拟主机的访问日志

        

        #定义错误提示页面

        error_page   500 502 503 504 /50x.html;  

        location = /50x.html {

            root     /root;

        }



        #对 "/yum" 启用反向代理

        location /yum {

            proxy_pass          http://lcs

            proxy_redirect      http://www.lcs.com/yum

            proxy_set_header    X-Real-IP $remote_addr;

            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for; #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP



            #以下是一些反向代理的配置

            proxy_set_header Host      $host;

            client_max_body_size       10m;  #允许客户端请求的最大单文件字节数

            client_body_buffer_size    128k; #缓冲区代理缓冲用户端请求的最大字节数

            proxy_connect_timeout      90;   #nginx跟后端服务器连接超时时间(代理连接超时)

            proxy_send_timeout         90;   #后端服务器数据回传时间(代理发送超时)

            proxy_read_timeout         90;   #连接成功后,后端服务器响应时间(代理接收超时)

            proxy_buffer_size          4k;   #设置代理服务器(nginx)保存用户头信息的缓冲区大小

            proxy_buffers              4 32k;#proxy_buffers缓冲区,网页平均在32k以下的设置

            proxy_busy_buffers_size    64k;  #高负荷下缓冲大小(proxy_buffers*2)

            proxy_temp_file_write_size 64k;  #设定缓存文件夹大小,大于这个值,将从upstream服务器传

        }

        

        #PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置.

        location ~ \.php$ {

            root            /root;

            fastcgi_pass    127.0.0.1:9000;

            fastcgi_index   index.php;

            fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;

            include         fastcgi_params;

        }



        #设定查看Nginx状态的地址

        location /NginxStatus {

            stub_status    on;

            access_log     off;

        }

        

        #HTTP Auth Basic模块,该模块采用基于HTTP基本身份验证的用户名和密码登录方式,来保护你的虚拟主机或目录

        location /NginxAuth{

            auth_basic              "NginxAuth";   #用于指定弹出的用户名和密码登录框中提示的名称

            auth_basic_user_file    conf/htpasswd; #用于设置htpasswd密码文件,htpasswd文件的内容可以用apache提供的htpasswd工具来产生

        }



        #所有静态文件由nginx直接读取

        location ~* .*\.(|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma|js|css)$ { #缓存时间设置      

            expires  15d; #d(天) h(时) m(分) s(秒)

        }



        #图片防盗链

        location ~* \.(gif|jpg|png)$ { #表示对gif、jpg、png后缀的文件实行防盗链

            valid_referers none blocked *.lcs.com; #表示对url来源进行判断,允许文件链出的域名白名单, cnblogs.com这个指的是子域名,域名与域名之间使用空格隔开

            if ($invalid_referer) {

                rewrite ^/ http://www.lcs.com/404.jpg; #如果不是指定来源就跳转到http://www.lcs.com/404.jpg页面,当然直接返回403也是可以的。

                #return 403;

            }

        }



        #禁止访问 .htxxx 文件

        location ~ /\.ht {

            deny  all;

        }

    }

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值