#user  nobody;  ##配置用户或者组
worker_processes  1; ##允许生成的进程数,一般设置和cpu核数一样

##制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别依次为:debug|info|notice|warn|error|crit|alert|emerg
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid; ##PID文件,记录当前启动的nginx的进程ID


events {
    worker_connections  1024; ##单个后台worker process进程的最大并发链接数
}


http {
    include       mime.types;  ##设定mime类型(邮件支持类型),类型由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  logs/access.log  main;

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

    #keepalive_timeout  0;
    keepalive_timeout  65; ##连接超时时间,可以在http,server,location块。

    #gzip  on;

    server {  #一个Server节点就是一个虚拟主机 vhost
        listen       80; #监听的端口号
        server_name  localhost; #服务器地址,主机名/ip/域名都可

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        ##请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。例如:location  ~*^.+$ {
        location / {
            root   html;   #静态资源路径 比如 /path/www/dist;   一般来说,访问dist/index.html文件,如果访问不到页面需加 try_files    $uri    $uri/    /index.html; 
            index  index.html index.htm;
        }
        
        ##反向代理
        location /api/ {
            proxy_pass http://127.0.0.1:8080;
            proxy_http_version 1.1;
            proxy_set_header Host $http_host;
            #设置ip
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header REMOTE-HOST $remote_addr;
            #支持websocket
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_cache_bypass $http_upgrade;
            #超时时间设置
            proxy_connect_timeout 60s;
            proxy_read_timeout 60s;
            proxy_send_timeout 60s; 
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

    # HTTP 转 HTTPS
    server {
        listen                           80;
        server_name                      baijq.com;
        return                           307 https://$host$request_uri;
    }
    # HTTPS Server
    server {
        listen                           443 ssl;
        server_name                      baijq.com;
    
        underscores_in_headers           on;
    
        client_max_body_size             2048m;
        client_header_buffer_size        512k;
        large_client_header_buffers      4 512k;
    
        ssl_certificate                  cert/baijq.com.pem;
        ssl_certificate_key              cert/baijq.com.key;
        ssl_session_timeout              5m;
        ssl_ciphers                      ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols                    TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers        on;   
    
        proxy_set_header                 Host $host;
        proxy_set_header                 X-Real-IP $remote_addr;
        proxy_set_header                 REMOTE-HOST $remote_addr;
        proxy_set_header                 X-Forwarded-For $proxy_add_x_forwarded_for;
       
        location / {
            proxy_pass                   http://127.0.0.1:8080;
            index                        index.html index.htm;
        }
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139