基础配置

示例:

    
    user  nginx;
    worker_processes  1;
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;

    events {
        worker_connections  1024;
    }

说明:

user:指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行。
worker_processes:指定了Nginx要开启的进程数。每个Nginx进程平均耗费10M~12M内存。建议指定和CPU的数量一致即可。
error_log:定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。
pid:主模块指令,用来指定进程pid的存储文件位置。
worker_rlimit_nofile:绑定worker进程和CPU, Linux内核2.4以上可用。

HTTP 模块配置

示例:

    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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

说明:

log_format: 指定Nginx日志的输出格式。main为此日志输出格式的名称,可以在下面的access_log指令中引用。
access_log: 指定日志文件路径。
sendfile:开启高效文件传输模式。将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞;
keepalive_timeout:设置客户端连接保持活动的超时时间。

负载均衡配置

示例:

    upstream cszhi.com{
        ip_hash;
        server 192.168.8.11:80;
        server 192.168.8.12:80 down;
        server 192.168.8.13:8009 max_fails=3 fail_timeout=20s;
        server 192.168.8.146:8080;
    }

说明:

upstream:配置负载均衡器,配置其名称。这个名称可以任意指定,在后面需要的地方直接调用即可;
ip_hash:指定负载均衡的调度算法。目前nginx有4种调度算法:
    轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响;
    Weight:指定轮询权值,Weight值越大,分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下;
    ip_hash:每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题;
    fair:比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块;
    url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的hash软件包。
server:指定多服务器的IP地址和端口,同时还可以设定每个后端服务器在负载均衡调度中的状态。常用的状态有:
    down:表示当前的server暂时不参与负载均衡;
    backup:预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻;
    max_fails:允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误;
    fail_timeout:在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。
    注意,当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是weight和backup。

serve 配置

端口域名配置

示例:

    listen      443 ssl http2;
    server_name xxx.hi-semp.com;

说明:

listen:配置服务端口。
server_name:配置服务域名。

ssl 配置

示例:

    ssl_certificate      cert/xxx.pem;
    ssl_certificate_key  cert/xxx.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_prefer_server_ciphers  on;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!3DES:!aNULL:!MD5:!ADH:!RC4; #首选加密套件
    ssl_protocols TLSv1.1 TLSv1.2; #允许的加密协议

说明:

ssl_certificate: ssl证书路径。
ssl_certificate_key:ssl证书路径。
ssl_session_cache:# 存储session参数的缓存的类型和大小
ssl_session_timeout:# session超时时间
ssl_prefer_server_ciphers:# 服务器加密优先
ssl_ciphers: # 首选加密套件
ssl_protocols:# 允许的加密协议,不建议使用TLSv1加密协议,其默认加密算法sha-1已被破解

反向代理设置

示例:

    proxy_pass http://127.0.0.1:11000/api;   

说明:

proxy_pass:指定代理地址

跨域设置

    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Headers X-Requested-With;
    add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
    add_header Content-Disposition 'attachment';
    add_header Content-Type "application/octet-stream";

压缩

示例:

    gzip on;
    gzip_buffers 4 16k;
    gzip_comp_level 5;
    gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;

说明:

gzip:开启gzip模块,实时压缩输出数据流。
gzip_buffers:处理请求压缩的缓冲区数量和大小。
gzip_comp_level:指定GZIP压缩比,1 压缩比最小,处理速度最快;9 压缩比最大,传输速度快,但处理最慢,也比较消耗cpu资源;
gzip_types:指定压缩的类型,无论是否指定,“text/html”类型总是会被压缩的;