美文网首页
nginx设置

nginx设置

作者: rommy020 | 来源:发表于2018-08-16 11:34 被阅读0次

Nginx地址
官网:http://www.nginx.org/
源码:https://trac.nginx.org/nginx/browser

常见命令:

启动: 
    service nginx start
    
##停止:
    nginx -s stop
        or
    pkill -9 nginx
    
##重启:
    nginx -s reload
    
##查看进程:
    ps -ef | grep nginx
    
##检查nginx.conf文件修改是否正确:
    nginx -t -c /etc/nginx/nginx.conf
        or 
    nginx -t
    
##查看nginx版本
    nginx -v

nginx的配置文件解释:
1: 配置文件中每个指令必须有分号结束
2: nginx的配置文件为nginx.conf
3: worker_processes:
据官方说法,一般开一个就够了,多开几个,可以减少机器io带来的影响。ginx开启太多的进程,会影响主进程调度,所以占用的cpu会增高。
4: worker_rlimit_nofile
打开文件数, 配置要和系统的单进程打开文件数一致.
5: error_log:
Nginx软件会把自身运行的故障信息及用户访问的日志信息记录到指定的日志文件里, 可以放在Main区块中全局配置,也可以放在不同的虚拟主机中单独记录虚拟主机的错误信息.
语法: error_log: <FILE> <LEVEL>
File: 存放日志的目录
LEVEL: 日志级别,[debug | info | notice | warn | error | crit | alert | emerg],级别越高记录的信息越少。
生产场景一般是 warn | error | crit 这三个级别之一, 如果级别太低, 则会带来大量的磁盘I/O消耗
6: worker_connections:
每一个worker进程能并发处理(发起)的最大连接数(包含所有连接数), 不能超过worker_rlimit_nofile
7: multi_accept:
告诉nginx收到一个新连接通知后接受尽可能多的连接。
8: use:
设置用于复用客户端线程的轮询方法
如果你使用Linux 2.6+,你应该使用epoll。如果你使用*BSD,你应该使用kqueue.
9: ssl_protocols
用于启动特定的加密协议,nginx在1.1.13和1.0.12版本后默认是ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2,TLSv1.1与TLSv1.2要确保OpenSSL >= 1.0.1 ,SSLv3 现在还有很多地方在用但有不少被攻击的漏洞。
10: include
include其他的设置进来
11: 日志格式 log_format

语法 log_format <name> <string>
string中的变量如下:
$remote_addr, $http_x_forwarded_for 记录客户端IP地址
$remote_user 记录客户端用户名称
$request 记录请求的URL和HTTP协议
$status 记录请求状态
$body_bytes_sent 发送给客户端的字节数,不包括响应头的大小; 该变量与Apache模块mod_log_config里的“%B”参数兼容。
$bytes_sent 发送给客户端的总字节数。
$connection 连接的序列号。
$connection_requests 当前通过一个连接获得的请求数量。
$msec 日志写入时间。单位为秒,精度是毫秒。
$pipe 如果请求是通过HTTP流水线(pipelined)发送,pipe值为“p”,否则为“.”。
$http_referer 记录从哪个页面链接访问过来的
$http_user_agent 记录客户端浏览器相关信息
$request_length 请求的长度(包括请求行,请求头和请求正文)。
$request_time 请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。
$time_iso8601 ISO8601标准格式下的本地时间。
$time_local 通用日志格式下的本地时间。

12: server_tokens:
是否隐藏nginx的版本, 因为可以根据版本去攻击
13: tcp_nopush:
当使用sendfile函数时,tcp_nopush才起作用,它和指令tcp_nodelay是互斥的
tcp_nopush = on会设置调用tcp_cork方法,这个也是默认的,结果就是数据包不会马上传送出去,等到数据包最大时,一次性的传输出去,这样有助于解决网络堵塞.

具体例子:

#启动进程,通常设置成和cpu的数量相等
    worker_processes  auto;
    worker_rlimit_nofile 100000;

    #全局错误日志及PID文件
    error_log  /var/log/nginx/error.log  info;

    pid        /var/run/nginx.pid;

    #工作模式及连接数上限
    events {
        #单个后台worker process进程的最大并发链接数
        worker_connections  2048;
        multi_accept on;
        use epoll;
    }

    http {
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        #设定mime类型,类型由mime.type文件定义
        include       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 '
                    '"$upstream_addr" "$upstream_status" "$upstream_response_time" "$request_time"';
        log_format data '[$time_local] -- "$request"--$status "$request_body"';

        access_log  /var/log/nginx/access.log  main;

        server_tokens off;
        
        #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
        #对于普通应用,必须设为 on,
        #如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,
        #以平衡磁盘与网络I/O处理速度,降低系统的uptime.
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;

        #连接超时时间
        keepalive_timeout  300;
        client_header_timeout 300;
        client_body_timeout 300;
        reset_timedout_connection on;
        send_timeout 300;

        #limit_conn_zone $binary_remote_addr zone=addr:10m;
        #limit_conn addr 100;

        #设定请求缓冲
        include    proxy.conf;

        #开启gzip压缩
        #include   gzip.conf;

        #保存服务器名字的hash表,如果64还不够,那么就按32的倍数往上加.
        server_names_hash_bucket_size 64;

        #设定负载均衡的服务器列表, 虚拟主机配置
        include servers/{url1具体的网站}.conf;
        include servers/{url2具体的网站}.conf;
    }

{url1具体的网站}.conf

upstream {MYSETTING 自己任意定义的, 给后面使用, 这里主要给负载均衡用} {
        #weigth参数表示权值,权值越高被分配到的几率越大
        least_conn;
        server {IP地址1}:8620 weight=1;       #服务器A
        server {IP地址2}:8620 weight=1;       #服务器A
    }

    #设定虚拟主机配置
    server {
        #侦听80端口
        listen       80;
        server_name {想代理url, 例如 xxx.baidu.com};

        listen       443 ssl;
        ssl_certificate     STAR_nextxnow_com_20170209.crt;
        ssl_certificate_key nextxnow_ssl_cert_20170209.key;

        ssl_prefer_server_ciphers on;
        ssl_dhparam dhparams.pem;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC4-SHA;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        if ($scheme = http) {
                return 301 https://$server_name$request_uri;
        }

        access_log  /var/log/nginx/access.log  main;

        #默认请求
        location / {
            #定义服务器的默认网站根目录位置
            root   html;
            #定义首页索引文件的名称
            index  index.html;
     
            proxy_pass  http://MYSETTING;
        }

        #启用nginx status 监听页面
        location /nginxstatus {      
            stub_status on;      
            access_log on;    
            allow 113.107.1.60;
            deny all;   
        }

        # 定义错误提示页面
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

相关文章

网友评论

      本文标题:nginx设置

      本文链接:https://www.haomeiwen.com/subject/ytvnbftx.html