nginx配置全解析

﹏ヽ暗。殇╰゛Y 2024-02-17 11:38 147阅读 0赞
  1. #用于指定 Nginx 进程运行的用户和用户组,root 用户具有系统的最高权限(潜在的安全漏洞)可以用use nginx=>非特权用户(通常是 nginx)的身份运行
  2. user root;
  3. #Nginx服务器能够同时处理的连接数量(设置服务器cpu核数),每个进程是相互独立的,可以并行处理请求,从而提高Nginx 的并发能力和性能
  4. worker_processes 1;
  5. #error_log logs/error.log;
  6. #error_log logs/error.log notice;
  7. #error_log logs/error.log info;
  8. #pid logs/nginx.pid;
  9. events {
  10. #每个进程可以同时打开的最大连接数
  11. worker_connections 1024;
  12. }
  13. #RTMP协议配置。用于流媒体传输。该配置使用 Nginx 的 rtmp 模块来支持 RTMP 协议。
  14. rtmp {
  15. server {
  16. listen 1935; #监听端口
  17. #用于实时直播的应用程序。
  18. application live {
  19. live on; #允许客户端通过 RTMP 协议进行实时直播流传输
  20. }
  21. #用于实时直播流的HLS应用程序
  22. application hls {
  23. live on; #允许客户端进行实时直播流传输
  24. hls on; #启用 HLS功能,HLS 是一种流媒体传输协议
  25. hls_path /usr/local/nginx/html/hls; #指定了 HLS 切片的存放路径
  26. hls_fragment 1s; #本地切片长度
  27. hls_playlist_length 4s; #HLS播放列表长度
  28. }
  29. }
  30. }
  31. #http配置
  32. http {
  33. #用于引入一个外部文件 mime.types,在当前配置文件目录下有mime.types文件,可以确保服务器正确地处理文件的 MIME 类型,从而保证文件能够以正确的方式传输和呈现给客户端。
  34. #mime.types里面有MIME 类型的映射关系,
  35. include mime.types; #默认
  36. #指令用于设置当服务器无法确定文件的 MIME 类型时的默认类型
  37. default_type application/octet-stream; #默认
  38. #限制请求体的大小,若超过所设定的大小,返回413错误
  39. client_max_body_size 300M;
  40. #设置日志的记录格式
  41. log_format json '{\"remote_addr\": \"$remote_addr\",'
  42. '\"remote_user\": \"$remote_user\",'
  43. '\"request\": \"$request\",'
  44. '\"status\": \"$status\",'
  45. '\"body_bytes_sent\": \"$body_bytes_sent\",'
  46. '\"http_referer\": \"$http_referer\",'
  47. '\"http_user_agent\": \"$http_user_agent\",'
  48. '\"http_x_forwarded_for\": \"$http_x_forwarded_for\"'
  49. '}';
  50. #日志文件的存放路径,格式
  51. access_log logs/access.log json;
  52. sendfile on;
  53. #tcp_nopush on;
  54. upstream mysvr {
  55. #192.168.0.42:80服务地址
  56. server 192.168.0.42:80 max_fails=2 fail_timeout=30; #当服务器连续失败的次数达到 2 次时,Nginx 将认为该服务器暂时不可用,在 30 秒内不再发送请求到该服务器
  57. }
  58. client_body_timeout 1800; #客户端请求体的超时时间,即客户端发送请求体的最大时间间隔
  59. #keepalive_timeout 0;
  60. keepalive_timeout 1800; #持久连接的超时时间,在没有新的请求到达服务器的情况下,服务器将保持连接打开的时间长度
  61. proxy_connect_timeout 1800; #nginx跟后端服务器连接超时时间(代理连接超时)
  62. proxy_send_timeout 1800; #向后端服务器发送请求的超时时间。如果在指定的时间内无法完成请求的发送,将视为发送超时
  63. proxy_read_timeout 1800; #连接成功后,后端服务器响应时间,若此时间内没接到响应,则响应超时
  64. #gzip on;
  65. send_timeout 360; #发送响应给客户端的超时时间为360秒。如果在指定的时间内无法完成响应的发送,将视为发送超时
  66. #topology的配置页面的配置
  67. server {
  68. listen 3000; #端口
  69. server_name 192.168.0.42; #客户端请求的域名或主机名
  70. # 处理根路径 / 的请求
  71. location / {
  72. root /opt/topology/dist; #topolopy的前端包所放的目录。
  73. index index.html index.htm; #当请求的路径是目录时,默认返回的文件名为 index.html 或 index.htm。默认
  74. try_files $uri $uri/ /index.html; #定义文件检查和重定向规则。先匹配 $uri,如果文件不存在,则尝试匹配 $uri/,最后如果都失败,则返回 /index.html
  75. }
  76. # 以 /group[1-9]/M00 开头的请求配置
  77. location ~/group[1-9]/M00 {
  78. root /opt/fdfs/storage/data; #静态文件所在的根目录
  79. ngx_fastdfs_module; #处理 FastDFS 文件存储系统的请求(Nginx 第三方模块)。该模块需要事先安装和配置
  80. }
  81. # 处理workspace/group1/开头的请求
  82. location /workspace/group1/ {
  83. proxy_pass http://mysvr/user/; #将请求转发到 http://mysvr/user/ 的目标服务器
  84. }
  85. location /user/ {
  86. proxy_pass http://mysvr/user/;
  87. }
  88. location /place/ {
  89. proxy_pass http://mysvr/place/;
  90. }
  91. location /fastdfs/ {
  92. proxy_pass http://mysvr/fastdfs/;
  93. }
  94. location /asset/ {
  95. proxy_pass http://mysvr/asset/;
  96. }
  97. location /ffmpeg/ {
  98. proxy_pass http://mysvr/ffmpeg/;
  99. }
  100. }
  101. server {
  102. listen 80;
  103. server_name 192.168.0.42;
  104. location / {
  105. root /opt/dist; #dcim的前端包地址
  106. index index.html index.htm;
  107. try_files $uri $uri/ /index.html;
  108. }
  109. location ~/group[1-9]/M00 {
  110. #root /usr/fastdfs/storage/data;
  111. root /usr/local/fastdfs/fastdfs-6.07/storage/data;
  112. ngx_fastdfs_module;
  113. }
  114. location /dcim-api/ {
  115. proxy_pass http://mysvr/dcim-api/; # 将请求转发到 http://mysvr/dcim-api/ 如果端口80,的携带dcim-api/。端口不是80则proxy_pass http://mysvr/;
  116. proxy_set_header Host $host:$server_port; # 设置代理请求的头部信息,包括 Host 头部
  117. proxy_connect_timeout 600; #设置代理连接超时时间
  118. proxy_read_timeout 600; #设置代理读取超时时间
  119. proxy_send_timeout 600; #设置代理发送超时时间
  120. }
  121. #自定义报表,不需要可删除,若使用记得改这里的IP地址
  122. location /api/ {
  123. proxy_pass http://192.168.0.42:5000/api/;
  124. proxy_set_header Host $host:$server_port;
  125. proxy_connect_timeout 200;
  126. proxy_read_timeout 200;
  127. proxy_send_timeout 200;
  128. }
  129. location /hls {
  130. #定义了响应的 MIME 类型
  131. types{
  132. application/vnd.apple.mpegurl m3u8;
  133. video/mp2t ts;
  134. }
  135. alias /usr/local/nginx/html/hls; #将请求映射到 /usr/local/nginx/html/hls 目录下的文件
  136. expires -1; #设置响应头中的 Expires 字段为过去的一个时间,即禁用缓存
  137. }
  138. #指定当出现 500、502、503 或 504 错误时,跳转到 /50x.html 页面
  139. error_page 500 502 503 504 /50x.html;
  140. #指定处理 /50x.html 路径的请求
  141. location = /50x.html {
  142. root html; #将 /50x.html 映射到 html 目录下的文件
  143. }
  144. }
  145. # another virtual host using mix of IP-, name-, and port-based configuration
  146. #下载文件(回放)
  147. server {
  148. listen 8001;
  149. server_name 192.168.0.42;
  150. # 以/downloadFile/ 开头的请求映射到 /root/image/downloadFile/ 目录下的文件,并提供下载功能
  151. location /downloadFile/ {
  152. alias /root/image/downloadFile/; #需要下载的文件存放的目录
  153. sendfile on; #开启 Nginx 的 sendfile 功能,用于高效地传输文件
  154. autoindex on; # 开启目录文件列表
  155. autoindex_exact_size on; # 显示出文件的确切大小,单位是bytes
  156. autoindex_localtime on; # 显示的文件时间为文件的服务器时间
  157. charset utf-8,gbk; # 避免中文乱码
  158. }
  159. }
  160. }

发表评论

表情:
评论列表 (有 0 条评论,147人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Nginx 配置

    概述 在上一篇文章《 [ Nginx 启动初始化过程][Nginx]》简单介绍了 Nginx 启动的过程,并分析了其启动过程的源码。在启动过程中有一个步骤非常重要,就是调