3. Nginx 命令行参数 & nginx.conf 设置文件的详细阐明(附有截图阐明) ...

打印 上一主题 下一主题

主题 1057|帖子 1057|积分 3171

3. Nginx 命令行参数 & nginx.conf 设置文件的详细阐明(附有截图阐明)

@
目次

1. Nginx 命令行参数

Nginx 指令阐明:https://nginx.org/en/docs/switches.html


  • 停止 Nginx 命令:
  1.   /usr/local/nginx/sbin/nginx -s stop #
复制代码
  1. [root@localhost nginx]# /usr/local/nginx/sbin/nginx -s stop
复制代码


  • 启动 Nginx 命令
  1. [root@localhost nginx]# /usr/local/nginx/sbin/nginx
复制代码


  • 重新加载(不需要重启) /usr/local/nginx/sbin/nginx -s reload
  1. /usr/local/nginx/sbin/nginx -s reload
复制代码


  • 查看版本
  1. [root@localhost nginx]# /usr/local/nginx/sbin/nginx -v
复制代码


  • 查看版本、设置参数  /usr/local/nginx/sbin/nginx -V
  1. [root@localhost nginx]# /usr/local/nginx/sbin/nginx -V
复制代码

2. nginx.conf 设置文件

Nginx 的设置文件( nginx.conf )位置:
文件位置:

  • 安装目次  \conf \nginx.conf


  • 安装目次 \nginx.conf (特别阐明:这个路径下的文件,有的时候是没有的,而在 第一个路径的 conf\nginx.conf 当中就是有的)
两个文件是一样的
使用  /usr/local/nginx/sbin/nginx  启动 Nginx  ,默认用的是  安装目次 \nginx.conf 设置文件
nginx.conf 设置文件的作用是:完成对 Nginx 的各种设置,包括端口,并发数,重写规则等。
nginx.conf 组成:

  • 全局块
  • events 块
  • http 块
nginx.conf 详细文档:https://blog.csdn.net/liuchang19950703/article/details/110792007
  1. #Nginx用户及组:用户 组。window下不指定
  2. #user  nobody;
  3. #工作进程:数目。根据硬件调整,通常等于CPU数量或者2倍于CPU。
  4. worker_processes  1;
  5. #错误日志:存放路径。
  6. #error_log  logs/error.log;
  7. #error_log  logs/error.log  notice;
  8. #error_log  logs/error.log  info;
  9. #pid(进程标识符):存放路径
  10. pid       /usr/local/nginx/logs/nginx.pid;
  11. #一个进程能打开的文件描述符最大值,理论上该值因该是最多能打开的文件数除以进程数。
  12. #但是由于nginx负载并不是完全均衡的,所以这个值最好等于最多能打开的文件数。
  13. #LINUX系统可以执行 sysctl -a | grep fs.file 可以看到linux文件描述符。
  14. worker_rlimit_nofile 65535;
  15. events {
  16.         #使用epoll的I/O 模型。linux建议epoll,FreeBSD建议采用kqueue,window下不指定。
  17.         use epoll;
  18.        
  19.         #单个进程最大连接数(最大连接数=连接数*进程数)
  20.     worker_connections  1024;
  21.        
  22.         #客户端请求头部的缓冲区大小。这个可以根据你的系统分页大小来设置,
  23.         #一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。
  24.         #client_header_buffer_size 4k;
  25. }
  26. http {
  27.         #设定mime类型,类型由mime.type文件定义
  28.     include       mime.types;
  29.        
  30.     default_type  application/octet-stream;
  31.        
  32.         #日志格式设置
  33.     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  34.     #                  '$status $body_bytes_sent "$http_referer" '
  35.     #                  '"$http_user_agent" "$http_x_forwarded_for"';
  36.        
  37.                
  38.         #用了log_format指令设置了日志格式之后,需要用access_log指令指定日志文件的存放路径
  39.         #记录了哪些用户,哪些页面以及用户浏览器、ip和其他的访问信息
  40.         #access_log  logs/host.access.log  main;
  41.         #access_log  logs/host.access.404.log  log404;
  42.        
  43.         #服务器名字的hash表大小
  44.     server_names_hash_bucket_size 128;
  45.        
  46.         #客户端请求头缓冲大小。
  47.     #nginx默认会用client_header_buffer_size这个buffer来读取header值,
  48.     #如果header过大,它会使用large_client_header_buffers来读取。
  49.     #如果设置过小HTTP头/Cookie过大 会报400 错误 nginx 400 bad request
  50.     #如果超过buffer,就会报HTTP 414错误(URI Too Long)
  51.     #nginx接受最长的HTTP头部大小必须比其中一个buffer大
  52.     #否则就会报400的HTTP错误(Bad Request)
  53.     #client_header_buffer_size 32k;
  54.     #large_client_header_buffers 4 32k;
  55.        
  56.        
  57.         #隐藏ngnix版本号
  58.     #server_tokens off;
  59.        
  60.         #忽略不合法的请求头
  61.     #ignore_invalid_headers   on;
  62.        
  63.         #让 nginx 在处理自己内部重定向时不默认使用  server_name设置中的第一个域名
  64.     #server_name_in_redirect off;
  65.        
  66.        
  67.         #客户端请求体的大小
  68.     #client_body_buffer_size    8m;
  69.    
  70.   
  71.     #开启文件传输,一般应用都应设置为on;若是有下载的应用,则可以设置成off来平衡网络I/O和磁盘的I/O来降低系统负载
  72.     sendfile        on;
  73.        
  74.        
  75.         #告诉nginx在一个数据包里发送所有头文件,而不一个接一个的发送。
  76.     #tcp_nopush     on;
  77.        
  78.         #tcp_nodelay off 会增加通信的延时,但是会提高带宽利用率。在高延时、数据量大的通信场景中应该会有不错的效果
  79.     #tcp_nodelay on,会增加小包的数量,但是可以提高响应速度。在及时性高的通信场景中应该会有不错的效果
  80.         tcp_nodelay on;
  81.        
  82.     #长连接超时时间,单位是秒
  83.     keepalive_timeout  65;
  84.     #gzip模块设置,使用 gzip 压缩可以降低网站带宽消耗,同时提升访问速度。
  85.     #gzip  on;                     #开启gzip
  86.     #gzip_min_length  1k;          #最小压缩大小
  87.     #gzip_buffers     4 16k;       #压缩缓冲区
  88.     #gzip_http_version 1.0;        #压缩版本
  89.     #gzip_comp_level 2;            #压缩等级
  90.     #gzip_types   text/plain text/css text/xml text/javascript application/json application/x-javascript application/xml application/xml+rss;#压缩类型
  91.    
  92.        
  93.        
  94.        
  95.     #负载均衡
  96.         #max_fails为允许请求失败的次数,默认为1
  97.         #weight为轮询权重,根据不同的权重分配可以用来平衡服务器的访问率。
  98.     # upstream myServer{
  99.     #   server  192.168.247.129:8080 max_fails=3 weight=2;
  100.     #   server  192.168.247.129:8081 max_fails=3 weight=4;       
  101.     # }
  102.        
  103.        
  104.        
  105.     #server {
  106.     #    listen       80;
  107.         #       
  108.         #        #IP/域名可以有多个,用空格隔开
  109.         #        server_name  192.168.247.129;
  110.         #        #server_name  www.test.com;
  111.         #
  112.     #    #charset koi8-r;
  113.         #
  114.     #    #access_log  logs/host.access.log  main;
  115.         #       
  116.         #   #反向代理配置,
  117.     #   #将所有请求为www.test.com的请求全部转发到upstream中定义的目标服务器中。
  118.     #   location / {
  119.         #                          
  120.         #            #此处配置的域名必须与upstream的域名一致,才能转发。
  121.         #            proxy_pass http://myServer;
  122.         #            #proxy_pass http://192.168.247.129:8080;
  123.         #               
  124.         #                 proxy_connect_timeout 20;          #nginx跟后端服务器连接超时时间(代理连接超时)
  125.         #               
  126.     #        #client_max_body_size       10m;   #允许客户端请求的最大单文件字节数
  127.     #        #client_body_buffer_size    128k;  #缓冲区代理缓冲用户端请求的最大字节数
  128.         #                 #proxy_send_timeout         300;   #后端服务器数据回传时间(代理发送超时)
  129.     #        #proxy_read_timeout         300;   #连接成功后,后端服务器响应时间(代理接收超时)
  130.     #        #proxy_buffer_size          4k;    #设置代理服务器(nginx)保存用户头信息的缓冲区大小
  131.     #        #proxy_buffers              4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
  132.     #        #proxy_busy_buffers_size    64k;   #高负荷下缓冲大小(proxy_buffers*2)
  133.     #        #proxy_temp_file_write_size 64k;   #设定缓存文件夹大小,大于这个值,将从upstream服务器传                   
  134.         #               
  135.         #                root   html;
  136.         #               
  137.         #                #定义首页索引文件的名称
  138.         #                index  index.html index.htm;
  139.     #    }
  140.         #
  141.     #   #动静分离 静态资源走linux 动态资源走tomcat
  142.     #   # 注意 /source/image/下面寻找资源
  143.     #   location /image/ {
  144.     #       root /source/;
  145.         #       autoindex on;
  146.     #   }                
  147.         #
  148.         #
  149.         #    # 出现50x错误时,使用/50x.html页返回给客户端
  150.     #    error_page   500 502 503 504  /50x.html;
  151.     #    location = /50x.html {
  152.     #        root   html;
  153.     #    }
  154.     #}
  155.                
  156.                
  157.                
  158.         #下面是配置生产环境中既支持HTTP又支持HTTPS,保证用户在浏览器中输入HTTP也能正常访问
  159.        
  160.         # SSL证书 配置                                 
  161.         ssl_certificate             cert/yphtoy.com.pem;   #加密证书路径
  162.         ssl_certificate_key        cert/yphtoy.com.key;       #加密私钥路径
  163.         ssl_protocols                TLSv1 TLSv1.1 TLSv1.2;     #加密协议
  164.         ssl_session_cache        shared:SSL:1m;             #加密访问缓存设置,可以大大提高访问速度
  165.         ssl_session_timeout        10m;                       #加密访问缓存过期时间
  166.         ssl_ciphers                HIGH:!aNULL:!MD5;              #加密算法
  167.         ssl_prefer_server_ciphers on;                       #是否由服务器决定采用哪种加密算法
  168.        
  169.         # 负载均衡
  170.         upstream api_upstream
  171.         {
  172.             server 127.0.0.1:8080 max_fails=3 weight=1;
  173.                 server 127.0.0.1:8081 max_fails=3 weight=1;
  174.         }
  175.        
  176.         #api 接口(兼容HTTP)
  177.         server{
  178.             listen 80;
  179.                 server_name api.test.com;
  180.                 # 301重定向跳转到HTTPS接口
  181.                 return 301 https://$server_name$request_uri;
  182.                 error_page   500 502 503 504  /50x.html;
  183.         location = /50x.html {
  184.             root   html;
  185.         }
  186.         }
  187.        
  188.         #api 接口(兼容HTTPS)
  189.         server{
  190.             listen 443 ssl;
  191.                 server_name api.test.com;
  192.                 location / {
  193.                    root html;
  194.                    index  index.html index.htm;
  195.                    proxy_pass http://api_upstream;
  196.                   
  197.                    #语法: proxy_cookie_path oldpath replacepath;
  198.                    #oldpath就是你要替换的路径 replacepath 就是要替换的值
  199.                    #作用:同一个web服务器下面多个应用之间能获取到cookie
  200.                    proxy_cookie_path /api/ /;
  201.                   
  202.                    #服务端接收的请求头Cooke值不变
  203.                    proxy_set_header Cookie $http_cookie;
  204.                 }
  205.         }
  206.        
  207.         #管理后台端(兼容HTTP)
  208.         server{
  209.             listen 80;
  210.                 server_name manage.test.com;
  211.                 # 301重定向跳转到HTTPS接口
  212.                 return 301 https://$server_name/$request_uri;
  213.                 error_page 500 502 503 504 /50x.html;
  214.                 location = /50x.html{
  215.                          root html       
  216.                 }
  217.         }
  218.        
  219.         #管理后台端(兼容HTTPS)
  220.         server{
  221.             listen 443 ssl;
  222.                 server_name manage.test.com;
  223.                 location / {
  224.                     root /home/test/web/dist
  225.                        
  226.                         index /index.html;
  227.                        
  228.                        
  229.                         #语法:try_files 【$uri】 【 $uri/】 【参数】
  230.                         #当用户请求https://manage.test.com/login时,
  231.                         #一.如果配置了上面的默认index,会依次请求
  232.                         #1./home/test/web/dist/login       查找有没有login这个文件,没有的话
  233.                         #2./home/test/web/dist/index.html  有就直接返回
  234.                        
  235.                         #二.如果没有配置了上面的默认index或者配置了没有找到对应的资源,会依次请求
  236.                         #1./home/test/web/dist/login        查找有没有login这个文件,没有的话
  237.                         #2./home/test/web/dist/login/       查找有没有login这个目录,没有的话
  238.                     #3.请求https://manage.test.com/index.html  nginx内部做了一个子请求
  239.                        
  240.                         #三.总的来说,index的优先级比try_files高,请求会先去找index配置,这里最后一个参数必须存在
  241.                         try_files $uri $uri/ /index.html;       
  242.                        
  243.                        
  244.                        
  245.                         #解决跨域问题
  246.             #允许跨域请求地址(*表示全部,但是无法满足带cookie请求,因为cookie只能在当前域请求)
  247.             add_header Access-Control-Allow-Origin $http_origin;
  248.             #允许接收cookie和发送cookie
  249.             add_header Access-Control-Allow-Credentials 'true';
  250.             #允许请求的方法
  251.             add_header Access-Control-Allow-Methods 'GET,POST,DELETE,PUT,OPTIONS';
  252.             #允许请求头(Content-Type:请求数据/媒体类型 x-requested-with:判断请求是异步还是同步 自定义header 比如 token)
  253.             add_header Access-Control-Allow-Headers $http_access_control_request_headers;
  254.             #浏览器缓存请求头信息,1800秒内,只会有1次请求,不会出现"OPTIONS"预请求,节约资源
  255.             #add_header Access-Control-Max-Age '1800';
  256.                     if ($request_method = 'OPTIONS') {
  257.                     return 204;
  258.             }
  259.                        
  260.                        
  261.                         #服务端HttpServletRequest可以获得用户的真实ip
  262.                     proxy_set_header X-Real-IP $remote_addr;
  263.                        
  264.                         #服务端HttpServletRequest可以获得用户的真实ip和经过的每一层代理服务器的ip
  265.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  266.                        
  267.                         #服务端接收的请求头Host值不变
  268.             proxy_set_header Host  $http_host;
  269.                        
  270.             proxy_set_header X-Nginx-Proxy true;
  271.                 }
  272.         }
  273.        
  274.        
  275.        
  276. }
复制代码
3. nginx.conf 讲解

一张图阐明 nginx.conf 布局

我们可以打开 nginx.conf 文件查看其中的内容:
  1. [root@localhost conf]# vim /usr/local/nginx/conf/nginx.conf
复制代码

全局块:

  • 从设置文件开始到  events  块之间的内容


  • 主要会设置一些影响 nginx 服务器整体运行的设置指令,主要包括设置运行 Nginx服务器的用户[组],答应天生的 worker process 数,进程 PID 存放路径,日志存放路径和类型以及设置文件的引入等。
  • worker_processes  1; 这是  Nginx  服务器并发处理服务的关键设置,worker_processes  值越大,可以支持 的并发处理量也越多,但是会受到硬件、软件等装备的制约。
events  块:


  • events  块涉及的指令主要影响  Nginx 服务器与用户的网络连接
  • 常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否答应同时 吸取多个网络连接,选取哪种事件驱动模型来处理连接哀求,每个 work process 可以同 时支持的最大连接数等。
  • worker_connections  1024; 述例子就表示每个  work process  支持的最大连接数为  1024,  这部分的设置对 Nginx 的性能影响较大,在实际中应根据实际情况设置。
http 块


  • 这是  Nginx 服务器设置中最复杂的部分,代理、缓存和日志定义等绝大多数功能和第 三方模块的设置都在这里
  • http 块也可以包括  http  全局块、server  块


  • http  全局块设置的指令包括文件引入、MIME-TYPE  定义、日志自定义、连接超时时 间、单连接哀求数上限等。
server 块:


  • 这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。
  • 每个 http 块可以包括多个 server 块,而每个 server 块就相称于一个虚拟主机。
  • 每个 server 块也分为全局 server 块,以及可以同时包罗多个 location 块。



  • 全局  server  块:最常见的设置是本虚拟机主机的监听设置和本虚拟主机的名称或  IP  设置。
location  块:


  • 一个  server  块可以设置多个  location  块
小结:
这块的主要作用是基于 Nginx 服务器吸取到的哀求字符串(例如:server_name/uri-string) ,对虚拟主机名称(也可以是 IP 别名) 之外的字符串(例如:前面的 /uri-string ) 进行匹配,对特定的哀求进行处理。好比:地址定向,数据缓存和应答控制等功能,另有许多第三方模块的设置也在这里进行。
4. 最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

勿忘初心做自己

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表