nginx.conf 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. #user nobody;
  2. worker_processes 1;
  3. #error_log logs/error.log;
  4. #error_log logs/error.log notice;
  5. #error_log logs/error.log info;
  6. #pid logs/nginx.pid;
  7. #静态模块:允许 Nginx 在服务器端对静态文件进行 Brotli 压缩,例如 HTML、CSS、JavaScript 等文件。
  8. load_module modules/ngx_http_brotli_static_module.so;
  9. # 过滤器模块:允许 Nginx 在服务器端对动态生成的内容进行 Brotli 压缩,例如动态生成的网页内容、API 响应等。
  10. load_module modules/ngx_http_brotli_filter_module.so;
  11. events {
  12. worker_connections 1024;
  13. }
  14. http {
  15. include mime.types;
  16. default_type application/octet-stream;
  17. #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  18. # '$status $body_bytes_sent "$http_referer" '
  19. # '"$http_user_agent" "$http_x_forwarded_for"';
  20. #access_log logs/access.log main;
  21. sendfile on;
  22. tcp_nopush on;
  23. tcp_nodelay on;
  24. #keepalive_timeout 0;
  25. keepalive_timeout 65;
  26. #开启brotli
  27. brotli off;
  28. #压缩级别
  29. brotli_comp_level 6;
  30. #开启brotli静态资源压缩
  31. brotli_static on;
  32. # 设置brotli压缩文件类型
  33. brotli_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css application/xml;
  34. #设置压缩所需要的缓冲区大小
  35. brotli_buffers 4 16k;
  36. #低于10kb的资源不压缩
  37. brotli_min_length 10k;
  38. #开启gzip
  39. gzip off;
  40. #nginx对于静态文件的处理模块,开启后会寻找以.gz结尾的文件,直接返回,不会占用cpu进行压缩,如果找不到则不进行压缩
  41. gzip_static on;
  42. #nginx做前端代理时启用该选项,表示无论后端服务器的headers头返回什么信息,都无条件启用压缩
  43. gzip_proxied expired no-cache no-store private auth;
  44. #低于10kb的资源不压缩
  45. gzip_min_length 10k;
  46. #设置压缩所需要的缓冲区大小
  47. gzip_buffers 4 16k;
  48. #设置gzip压缩针对的HTTP协议版本
  49. gzip_http_version 1.0;
  50. #压缩级别1-9,越大压缩率越高,同时消耗cpu资源也越多,建议设置在5左右。
  51. gzip_comp_level 5;
  52. #需要压缩哪些响应类型的资源,多个空格隔开。不建议压缩图片.
  53. gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css application/xml;
  54. #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
  55. gzip_disable "MSIE [1-6]\.";
  56. #是否添加“Vary: Accept-Encoding”响应头
  57. gzip_vary on;
  58. #ip限流每秒最多1000个请求
  59. limit_req_zone $binary_remote_addr zone=myRateLimit:15m rate=1000r/s;
  60. #限制并发连接数
  61. limit_conn_zone $binary_remote_addr zone=perip:10m;
  62. limit_conn_zone $server_name zone=perserver:10m;
  63. # lowflow官网
  64. server
  65. {
  66. listen 80;
  67. server_name www.usky usky;
  68. rewrite ^(.*)$ https://$host$1 permanent;
  69. }
  70. server
  71. {
  72. listen 443 ssl;
  73. server_name www.usky usky;
  74. ssl_certificate /etc/nginx/ssl/usky_cert_chain.pem;
  75. ssl_certificate_key /etc/nginx/ssl/usky_key.key;
  76. # 发送数据缓冲区大小
  77. ssl_buffer_size 4k;
  78. # 会话缓存区大小,每1m可以缓存4000个会话,大大减少了SSL握手的次数,提高了性能
  79. ssl_session_cache shared:SSL:50m;
  80. # 缓存SSL握手产生的参数和加密密钥的时长
  81. ssl_session_timeout 5h;
  82. # 表示使用的TLS协议的类型
  83. ssl_protocols TLSv1.2 TLSv1.3;
  84. add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
  85. # 使用的加密套件的类型
  86. #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
  87. ssl_ciphers TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:EECDH+CHACHA20:EECDH+AESGCM:EECDH+AES;
  88. # 加密套件优先选择服务器的加密套件。默认开启
  89. ssl_prefer_server_ciphers on;
  90. location / {
  91. root /usr/share/nginx/html/doc;
  92. index index.html index.htm;
  93. try_files $uri $uri/ /index.html;
  94. }
  95. }
  96. # lowflow预览地址
  97. server
  98. {
  99. listen 80;
  100. server_name demo.usky;
  101. # 强制将http的URL重写成https
  102. rewrite ^(.*)$ https://$host$1 permanent;
  103. location / {
  104. root /usr/share/nginx/html;
  105. index index.html index.htm;
  106. try_files $uri $uri/ @router;
  107. }
  108. }
  109. server
  110. {
  111. listen 443 ssl;
  112. http2 on;
  113. server_name demo.usky;
  114. ssl_certificate /etc/nginx/ssl/demo.usky_cert_chain.pem;
  115. ssl_certificate_key /etc/nginx/ssl/demo.usky_key.key;
  116. # 发送数据缓冲区大小
  117. ssl_buffer_size 4k;
  118. # 会话缓存区大小,每1m可以缓存4000个会话,大大减少了SSL握手的次数,提高了性能
  119. ssl_session_cache shared:SSL:50m;
  120. # 缓存SSL握手产生的参数和加密密钥的时长
  121. ssl_session_timeout 5h;
  122. # 表示使用的TLS协议的类型
  123. ssl_protocols TLSv1.2 TLSv1.3;
  124. add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
  125. # 使用的加密套件的类型
  126. #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
  127. ssl_ciphers TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:EECDH+CHACHA20:EECDH+AESGCM:EECDH+AES;
  128. # 加密套件优先选择服务器的加密套件。默认开启
  129. ssl_prefer_server_ciphers on;
  130. #listen 80;
  131. #server_name webServer;
  132. #dist上传的路径
  133. root /usr/share/nginx/html;
  134. index index.html index.htm;
  135. charset utf-8;
  136. proxy_set_header HOST $host;
  137. proxy_set_header X-Forwarded-Proto $scheme;
  138. # 获取客户端真实IP
  139. proxy_set_header X-Real-IP $remote_addr;
  140. proxy_set_header X-Real-Port $remote_port;
  141. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  142. # 支持websocket连接
  143. proxy_http_version 1.1;
  144. proxy_set_header Upgrade $http_upgrade;
  145. proxy_set_header Connection "upgrade";
  146. # 限制并发连接数
  147. #limit_conn perip 10; #每个IP最多10个并发连接
  148. # 客户端请求体限制10MB
  149. client_max_body_size 10m;
  150. # 避免访问出现 404 错误
  151. location / {
  152. root /usr/share/nginx/html; #dist上传的路径
  153. index index.html index.htm;
  154. try_files $uri $uri/ @router;
  155. }
  156. # 生产环境(http)
  157. location ^~/api {
  158. # 去除api前缀
  159. rewrite ^/api/(.*)$ /$1 break;
  160. # 代理到后端服务器
  161. proxy_pass http://usky:9089/;
  162. # 限流,每秒最多1000个请求
  163. limit_req zone=myRateLimit burst=100 nodelay;
  164. #每个IP最多50个并发连接
  165. limit_conn perip 50;
  166. }
  167. # 生产环境(socket)
  168. location ^~/ws {
  169. # 去除ws前缀
  170. rewrite ^/ws/(.*)$ /$1 break;
  171. # 代理到后端服务器
  172. proxy_pass http://usky:9089/;
  173. # 支持websocket连接
  174. proxy_http_version 1.1; # 确保使用 HTTP/1.1
  175. proxy_set_header Upgrade $http_upgrade;
  176. proxy_set_header Connection "upgrade";
  177. proxy_set_header Host $host;
  178. }
  179. error_page 500 502 503 504 /50x.html;
  180. location = /50x.html {
  181. root html;
  182. }
  183. location @router {
  184. rewrite ^.*$ /index.html last;
  185. }
  186. }
  187. # git仓库地址
  188. server
  189. {
  190. listen 80;
  191. server_name git.usky;
  192. rewrite ^(.*)$ https://$host$1 permanent;
  193. }
  194. server
  195. {
  196. listen 443 ssl;
  197. server_name git.lowflow.vip;
  198. ssl_certificate /etc/nginx/ssl/git.usky_cert_chain.pem;
  199. ssl_certificate_key /etc/nginx/ssl/git.usky_key.key;
  200. # 发送数据缓冲区大小
  201. ssl_buffer_size 4k;
  202. # 会话缓存区大小,每1m可以缓存4000个会话,大大减少了SSL握手的次数,提高了性能
  203. ssl_session_cache shared:SSL:50m;
  204. # 缓存SSL握手产生的参数和加密密钥的时长
  205. ssl_session_timeout 5h;
  206. # 表示使用的TLS协议的类型
  207. ssl_protocols TLSv1.2 TLSv1.3;
  208. add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
  209. # 使用的加密套件的类型
  210. #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
  211. ssl_ciphers TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:EECDH+CHACHA20:EECDH+AESGCM:EECDH+AES;
  212. # 加密套件优先选择服务器的加密套件。默认开启
  213. ssl_prefer_server_ciphers on;
  214. location / {
  215. proxy_pass http://usky.cn;
  216. }
  217. }
  218. }