user updater;#SUSE系统需要添加组users#user gdcn users;# nginx要开启的进程数,据官方说法,一般开一个就够,多开几个,可以减少机器io带来的影响响。 # 一般为当前机器总cpu核心数的1到2倍。如,我的机器为双核,那么开4个足够了。worker_processes 4;# 该参数要结合 worker_processes来一起使用, 分别给每个worker进程绑定一个CPU# 有多少个核,就有几位数,1表示该内核开启,0表示该内核关闭。# worker_processes最多开启8个,8个以上性能提升不会再提升了,而且稳定性变得更低,所以8个进程够用了worker_cpu_affinity 0001 0010 0100 1000;#进程最大可打开文件数量worker_rlimit_nofile 65535;events { # 设置用于复用客户端线程的轮询方法。Linux2.6+使用epoll,*BSD使用kqueue, # 在不设置的情况下,Nginx会选择一个最合适当前操作系统的。 #use epoll; #一个worker进程同时打开的最大连接数 worker_connections 65535;}http { #设定mime类型,支持类型在nginx的mime.type配置文件定义 include mime.types; #默认的mime类型 default_type application/octet-stream; # 设置日志的记录格式,具体https://blog.csdn.net/hephec/article/details/79340794 # main表示定义的格式名称,main后面表示格式样式 # $remote_addr和$http_x_forwarded_for用于记录IP地址; # $remote_user用于记录远程客户端用户名称; # $time_local用于记录访问时间与时区; # $request用于记录请求URL与HTTP协议; # $status用于记录请求状态,例如成功时状态为200,页面找不到时状态为404; # $body_bytes_sent用于记录发送客户端的文件主体内容大小; # $http_referer用于记录是从哪个页面链接访问过来的; # $http_user_agent用于记录客户浏览器的相关信息。 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; # 对应:关键字 日志文件 错误日志级别 # 关键字:error_log不能改变;日志文件:可以指定任意存放日志的目录 # 日志级别:[debug | info | notice | warn | error | crit | alert | emerg] # 级别越高记录的信息越少,生产场景一般是 warn | error | crit 这三个级别之一 # 注意:不要配置info等级较低的级别,会带来大量的磁盘I/O消耗。 error_log logs/error.log warn; #用来指定日志文件的路径及使用的何种日志格式记录日志 access_log logs/access.log main; #error_log中不记录不存在的错误 # 默认为on。启用或禁用404错误日志, # 用来禁止nginx记录找不到rebots.txt或favicon.ico这类文件的错误信息# log_not_found off; # 隐藏版本号。浏览器访问时抓包,查看HTTP响应的Server头没有版本号。 server_tokens off; # on表示启动高效传输文件的模式。 sendfile on; # 开启gzip压缩服务 gzip on; # nginx对于静态文件的处理模块。 #可以读取预先压缩的gz文件,这样可以减少每次请求进行gzip压缩的CPU资源消耗 #启用后,nginx首先检查是否存在请求静态文件的gz结尾的文件,如果有则直接返回该gz文件内容。 gzip_static on; # gzip压缩基于的http协议版本,默认就是HTTP 1.1 gzip_http_version 1.1; # 是否在http header中添加Vary: Accept-Encoding,建议开启 # 和http头有关系,加个vary头,给代理服务器用的,有的浏览器支持压缩, # 有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩 gzip_vary on; # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩。默认值:20,单位字节 # 官网没有给出建议值,在此建议1k起,因为小于1k的也没必要压缩,并根据实际情况来调整设定。 gzip_min_length 1000; # gzip压缩是要申请临时内存空间的,假设前提是压缩后大小是小于等于压缩前的。 # 例如,如果原始文件大小为10K,那么它超过了8K,所以分配的内存是8 * 2 = 16K;再例如, # 原始文件大小为18K,很明显16K也是不够的,那么按照 8 * 2 * 2 = 32K的大小申请内存。 # 如果没有设置,默认值是申请跟原始数据相同大小的内存空间去存储gzip压缩结果。 # 例如 4 8k 代表以8k为单位,按照原始数据大小以8k为单位的4倍申请内存。 gzip_buffers 4 8k; # gzip 压缩级别,1-10,数字越大压缩的越好,也越占用CPU时间 gzip_comp_level 9; # 需要进行gzip压缩的Content-Type的Header的类型。建议js、text、css、xml、json都要进行压缩; # 图片就没必要了,gif、jpge文件已经压缩得很好了,就算再压,效果也不好,而且还耗费cpu。 # javascript有多种形式。其中的值可以在 mime.types 文件中找到。 gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript image/jpeg image/gif image/png; # 指定 KeepAlive 的超时时间(timeout)。指定每个 TCP 连接最多可以保持多长时间。Nginx 的默认值是 75 秒 # 有些浏览器最多只保持 60 秒,所以可以设定为 60 秒。若将它设置为 0,就禁止了 keepalive 连接。# keepalive_timeout 65; #nginx默认的header长度上限是4k,如果超过了这个值如果header头信息请求超过了, # nginx会直接返回400错误可以通过以下2个参数来调整nginx的header上限## client_header_buffer_size 256k; # 设置nginx在处理header时实际分配的buffer大小## large_client_header_buffers 4 128k; # 默认1m,设置nginx服务允许用户最大上传数据大小根据业务需求调整上传文件大小限制 # 上传大文件时需要特别注意client_max_body_size这个参数, # 否则会中断在nginx的请求中是无法记录到访问的.# client_max_body_size 20M; # 客户端请求体buffer大小。用来处理POST提交数据,上传文件等。默认16K # client_body_buffer_size 256k; # 服务端向客户端传输数据的超时时间# send_timeout 12; send_timeout 120; keepalive_timeout 650; client_header_timeout 1200s; client_body_timeout 3600s; client_max_body_size 1024m; client_body_buffer_size 2m; #负载均衡,支持5种分配方式。原生支持的分配方式3种,第三方支持2两种。 # 原生支持:轮询、weight 、ip_hash # 1、轮询(默认) # 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除 # 2、weight # 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况,数字越大命中率越高。 # 3、ip_hash # 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题 # 第三方分配方式:fair 、url_hash # 4、fair(第三方) # 按后端服务器的响应时间来分配请求,响应时间短的优先分配。 # 5、url_hash(第三方) # 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 # upstream domain-uuas { server 192.168.1.44:8100; server 192.168.1.7:8100; server 192.168.1.114:8100; server 192.168.1.12:8100; server 192.168.1.201:8100; server 192.168.1.242:8100; server 192.168.1.155:8100; server 192.168.1.16:8100; } upstream domain-app { server 192.168.1.44:8801; server 192.168.1.7:8801; server 192.168.1.114:8801; server 192.168.1.12:8801; server 192.168.1.201:8801; server 192.168.1.242:8801; server 192.168.1.155:8801; server 192.168.1.16:8801; } upstream domain-pub { server 192.168.1.44:8800; server 192.168.1.7:8800; server 192.168.1.114:8800; server 192.168.1.12:8800; server 192.168.1.201:8800; server 192.168.1.242:8800; server 192.168.1.155:8800; server 192.168.1.16:8800; } upstream domain-edit { server 192.168.1.44:8802; server 192.168.1.7:8802; server 192.168.1.114:8802; server 192.168.1.12:8802; server 192.168.1.201:8802; server 192.168.1.242:8802; server 192.168.1.155:8802; server 192.168.1.16:8802; } upstream domain-vrfy { server 192.168.1.44:8803; server 192.168.1.7:8803; server 192.168.1.114:8803; server 192.168.1.12:8803; server 192.168.1.201:8803; server 192.168.1.242:8803; server 192.168.1.155:8803; server 192.168.1.16:8803; } upstream domain-stat { server 192.168.1.44:9001; server 192.168.1.7:9001; server 192.168.1.114:9001; server 192.168.1.12:9001; server 192.168.1.201:9001; server 192.168.1.242:9001; server 192.168.1.155:9001; server 192.168.1.16:9001; } # 定义一个虚拟主机:nginx支持使用基于主机名或IP的虚拟主机 # nginx 获取到url # 1.找server_name # 2.找location 匹配 # 如果没有找index默认的文件, 返回404 # 有的话加上默认的index.* 重新寻找匹配的location # 如果有进入执行try_files # 3.查找try_files 是否有相应的文件 # 如果没有直接重定向最后一项 server { listen 80; # 基于监听的端口 server_name localhost; #基于主机名区分 location / { root /var/front/digibook-app; index index.html index.htm; # index 默认路径,可以配置多个 try_files $uri $uri/ /index.html; } location /app { proxy_pass http://domain-app/digibook-app; } location /pub { # 设置后端代理服务器的地址。 # 这个地址(address)可以是一个域名或ip地址和端口,或者一个 unix-domain socket路径。 proxy_pass http://domain-pub/digibook-pub; } location /apis { proxy_pass http://domain-app/digibook-app/api/v1; } location /app-api { proxy_pass http://domain-app/digibook-app/api; } location /peo-saas { proxy_pass http://jc.gdtextbook.spm-edu.com/jxw-sdk-web/saas; } location /edit-api { proxy_pass http://domain-edit/digibook-edit/api; } location /common { proxy_pass http://domain-app/digibook-app/v1; } location /pubs { proxy_pass http://domain-pub/digibook-pub/api/v1; } location /stat/ { proxy_pass http://domain-stat/digibook-stat/api/v1/; } location /work/ { alias /var/front/digibook-assignment/work/; } location /resources/ { alias /mnt/resources/digibook-app/; } location /uuas { proxy_pass http://domain-uuas; } } server { listen 81; server_name localhost; location / { root /var/front/digibook-pub; index index.html index.htm; } location /uuas { proxy_pass http://domain-uuas; } location /user{ proxy_pass http://domain-pub/digibook-pub/user; } location /api { proxy_pass http://domain-pub/digibook-pub/api; } location /stat/ { proxy_pass http://domain-stat/digibook-stat/api/v1/; } location /digital-product/ { alias /mnt/resources/digibook-pub/; } location /digital-resource/ { alias /mnt/resources/digibook-pub/digital-resource/; } location /digibook-edit { proxy_pass http://domain-edit; } location /apis { proxy_pass http://domain-app/digibook-app/api/v1; } } server { listen 82; server_name localhost; location /uuas { proxy_pass http://domain-uuas; } location /digibook-edit { proxy_pass http://domain-edit; } location / { root /var/front/digibook-edit; index index.html index.htm; } location /digital-resource/ { alias /mnt/resources/digibook-edit/digital-resource/; } location /digital-product/ { alias /mnt/resources/digibook-edit/digital-product/; } location /digital-dev/ { alias /mnt/resources/digibook-edit/digital-dev/; } location /digital-preview/ { alias /mnt/resources/digibook-edit/digital-preview/; } location /digital-approval/ { alias /mnt/resources/digibook-edit/digital-approval/; } } server { listen 83; server_name localhost; location /uuas { proxy_pass http://domain-uuas; } location /digibook-vrfy { proxy_pass http://domain-vrfy; } location / { root /var/front/digibook-vrfy; index index.html index.htm; } location /digital-resource/ { alias /mnt/resources/digibook-edit/digital-resource/; } location /digital-product/ { alias /mnt/resources/digibook-edit/digital-product/; } location /digital-dev/ { alias /mnt/resources/digibook-edit/digital-dev/; } location /digital-preview/ { alias /mnt/resources/digibook-edit/digital-preview/; } location /digital-approval/ { alias /mnt/resources/digibook-edit/digital-approval/; } } server { listen 84; server_name localhost; location /apis { proxy_pass http://domain-app/digibook-app/api/v1; } location /common { proxy_pass http://domain-app/digibook-app/v1; } location / { root /var/front/digibook-assignment; index index.html index.htm; } } server { listen 8100; server_name localhost; location / { proxy_pass http://domain-uuas; } } server { listen 8800; server_name localhost; location / { proxy_pass http://domain-pub; } } server { listen 8801; server_name localhost; location / { proxy_pass http://domain-app; } } server { listen 8802; server_name localhost; location / { proxy_pass http://domain-edit; } } server { listen 8803; server_name localhost; location / { proxy_pass http://domain-vrfy; } }}