【工作必备】nginx,别想的太复杂!

nginx作为一个中间件,对一些协议http,rtmp等请求,进行转发和代请求。并没有多么复杂。像这样的代理中间件还有很多LiteSpeed、HAProxy、Caddy...正向代理,反向代理这样概念指定的是。nginx在为谁做事。

正向:多个客户端去直接访问nginx,nginx通过公网(方便理解)访问到服务资源。

反向:客户端通过公网访问,代理服务接收到转发到多个服务之间。

均衡:作为一个中间站,保证转发后各个服务的压力一致。

nginx.conf

用默认得http配置为例,详细理清里面得配置。

head
  • user:指定Nginx Worker进程运行的用户及用户组。
  • worker_processes:指定工作进程的个数,默认是1个。具体可以根据服务器CPU数量进行设置,比如CPU有4个,可以设置为4。如果不知道CPU的数量,可以设置为auto
  • error_log:用来定义全局错误日志文件输出路径,这个设置也可以放入http块、server块、location块中,以定义更具体的日志输出路径和级别。
  • pid:用来指定进程PID的存储文件位置。

 events

http

 

 server

location 

这个详细点,得抄点笔记

location [ = | ~ | ~* | ^~ ] uri { ... }
  • []中的内容是可选的修饰符,用于定义匹配的优先级和类型。
  • uri是请求的统一资源标识符(URI),用于匹配请求的URL。
  • {}内是当请求匹配时应用的配置指令。
  • =:表示精确匹配。如果请求的URI完全等于指定的uri,则使用该location块处理请求。这是优先级最高的匹配方式。
  • ~:表示区分大小写的正则表达式匹配。如果请求的URI符合指定的正则表达式,则使用该location块处理请求。
  • ~*:表示不区分大小写的正则表达式匹配。与~类似,但忽略URI中字母的大小写。
  • ^~:表示前缀匹配,但一旦匹配成功,就不会再进行正则表达式匹配。这可以提高处理性能,特别是在处理大量静态文件时。

里面得常用参数有,这个也不重要。

location /prod-api/ {  
    # 设置请求头中的Host字段为请求的主机名  
    proxy_set_header Host $host;  
      
    # 设置请求头中的X-Real-IP字段为客户端的真实IP地址  
    proxy_set_header X-Real-IP $remote_addr;  
      
    # 设置请求头中的X-Forwarded-For字段,以记录原始的客户端IP地址以及任何代理服务器的IP地址  
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
      
    # 注意:这里应该根据您的后端服务是否使用HTTPS来设置X-Forwarded-Proto  
    # 如果后端服务使用的是HTTP,则保持为http;如果是HTTPS,则更改为https  
    # 假设后端是HTTP服务,但如果您使用HTTPS到Nginx,这里可能需要调整为 $scheme  
    proxy_set_header X-Forwarded-Proto $scheme;  
      
    # 指定后端服务器的地址  
    # 假设您的后端服务监听在本地8080端口上  
    proxy_pass http://127.0.0.1:8080;  
      
    # 设置客户端请求体的最大允许大小  
    client_max_body_size 30m;  
}
  • root:定义请求的根目录。当请求匹配到该location块时,Nginx会将请求的URI附加到root指令指定的路径后面,以形成完整的文件路径。

  • alias:与root类似,但alias指定的路径会替换掉URI中匹配location块的部分。这通常用于将请求重定向到非根目录下的特定目录。

  • index:定义当请求是一个目录时,Nginx应该尝试返回的文件列表。如果请求是一个目录,并且没有指定具体的文件名,Nginx会依次尝试这些文件。

  • proxy_pass:将请求代理转发到另一个服务器。这是实现反向代理功能的关键指令。proxy_pass后面通常跟一个URL,表示请求应该被转发到的目标地址。

  • rewrite:重写请求的URI。这可以用于实现URL重写、重定向等功能。rewrite指令通常与正则表达式一起使用,以匹配并修改请求的URI。

  • try_files:按顺序检查文件是否存在,并使用第一个找到的文件进行请求处理。这可以用于处理静态文件请求,同时提供回退选项。

  • add_header:向响应中添加自定义的HTTP头部。这可以用于设置缓存控制、CORS策略等。

  • return:直接返回响应给客户端,而不是将请求传递给后端服务器或处理文件。这可以用于处理简单的请求,如返回404或500错误页面。

  • fastcgi_passuwsgi_passscgi_pass等:这些指令用于将请求转发给特定的后端处理程序,如FastCGI、uWSGI或SCGI应用。

nginx.exe

nginx注册成服务比较麻烦不说了,通常直接应用程序启动。

  • 基本启动:直接使用nginx命令启动Nginx,此时Nginx会使用默认的配置文件(通常是/usr/local/nginx/conf/nginx.conf/etc/nginx/nginx.conf,具体取决于Nginx的安装方式和操作系统)。
  • 指定配置文件启动:使用nginx -c /path/to/nginx.conf命令启动Nginx,并指定一个非默认的配置文件。
  • 快速停止:使用nginx -s stop命令快速停止Nginx服务。这种方式会立即停止Nginx,不等待当前正在处理的连接完成。
  • 优雅停止:使用nginx -s quit命令优雅地停止Nginx服务。Nginx会先关闭监听端口,停止接收新的连接,然后等待当前正在处理的连接完成后再退出。
  • 重新加载配置:使用nginx -s reload命令重新加载Nginx的配置文件。这允许在不中断当前连接的情况下应用配置更改。
  • 检查配置文件:使用nginx -t命令检查Nginx的配置文件是否存在语法错误。如果配置文件有问题,Nginx会输出错误信息。
  • 详细检查并打印配置:使用nginx -T命令除了检查配置文件外,还会将Nginx的默认配置文件和所有通过include指令引入的文件内容打印到标准输出。
  • 重新打开日志文件:使用nginx -s reopen命令重新打开日志文件。这可以用于日志轮转,避免在日志切割时丢失日志信息。
  • 查看版本信息:使用nginx -v命令查看Nginx的版本号,使用nginx -V命令查看Nginx的版本号以及编译时的配置参数。
  • 指定运行目录和配置文件:在启动、停止或重新加载Nginx时,可以通过-p参数指定Nginx的运行目录,通过-c参数指定配置文件。例如,nginx -p /home/nginx -c /home/nginx/nginx.conf
  • 查看Nginx进程:可以使用ps aux | grep nginx命令查看Nginx的进程信息。
  • 查看Nginx状态:在某些系统上,可以通过sudo systemctl status nginx命令查看Nginx的服务状态(这取决于系统是否使用systemd作为初始化系统)。

 *最后,新手最容易搞错的  /

proxy_pass后的url和localtion后url的关系

如果proxy_pass末尾路径写死,就直接配重写指令 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值