Nginx做为开发者的神器, 据2021年8月web服务器排行榜, nginx占据了30%的流量稳居第一, 相信大部分程序员都不会陌生.
相信大部分的开发人员都经历过配置Nginx的过程, 每次配置都是要各种查查查的过程, 而且经常要配置个半天才能配置完成, 然后再进行测试. 推荐一个网站nginx在线配置,nginx快速配置 - 问蒙在线工具 (tool.fit)来进行快速配置.
Nginx配置说明
Nginx配置以key空格value然后分号为结束符, 以#为注释符, 大括号{}里面的称为文件块如"http {}", 主要分为以下几块内容:
基础配置说明
这里负责Nginx的全局参数, 负责Nginx正常工作的基本参数
worker_processes auto;
#表示nginx启动的进程数和cpu的线程线一致error_log log/error.log debug;
#表示记录错误日志, 错误日志的文件是log/error.log,级别是debug.
HTTP配置说明
这里主要负责http/https的参数配置, 关于http的所有配置信息全部写在http配置块底下, 除了一些配置, 反向代理及负载均衡也都将配置在这下面. 例:
sendfile on;
#开启高效的文件传输模式gzip on;
#开启gzip文件压缩keepalive_timeout 65;
#设置超时时间为65, 即连接的总时长为65秒, 如果有大文件的传输, 请更改选项
Server(反向代理)配置说明
这里主要配置当前的代理的参数, 大部分HTTP的配置参数能在这里使用, 若使用会覆盖掉HTP的参数如 keepalive_timeout 600; 那么此时, 超时时长在当前代理会变成600s, 即10分钟, 位置信息将配置到该代理下面, 常用的参数
listen 80;
#监听80的端口listen 443 ssl;
#监听443的端口, 以https方式监听, 可以在一个代理下同时监听两个端口, 选择ssl需要配置相应的ssl_certificate和ssl_certificate_keyserver_name tool.fit;
#监听的域名, 可以由同一个端口, 多个域名, nginx会自动匹配到相应的反向代理上
Location(位置匹配)配置说明
位置信息匹配, 也是路由的匹配规则都将在这里体现. 主要语法
location [=|~|~*|^~] /uri/ { … }
^~
开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
location ^~ /static/ {
root /www/root/static; #根目录
}
~
开头表示区分大小写的正则匹配
location /proxy {
proxy_pass https://http_balance;
}
~*
开头表示不区分大小写的正则匹配!~和!~*
分别为区分大小写不匹配及不区分大小写不匹配 的正则/
通用匹配,任何请求都会匹配到。
location / {
proxy_pass http://127.0.0.1:8000;
}
- tcp/udp的server, 没有location选项, 只有端口, proxy_pass的时候不填前缀http://和https://, 另外udp的转发需要注意运行的nginx是否支持该项. 例:
server {
listen 888;
proxy_pass stream_balance;
}
Upstream(负载均衡)配置说明
负载均衡的目的, 是为了服务更多的前端请求, 同时更好的保证服务器集群的稳定性, 从而使系统更加健壮. 负载均衡的策略如下
会话保持(sticky)
,ip绑定(ip_hash)
,最少连接(least_conn)
,最短时间(least_time)
,公平(fair)
,url绑定(url_hash)
, 请查询您用的版本是否带有该项策略, 如果没有请参考如何使用, 每条负载内部有相应的六个个参数, 即IP地址
,监听端口
,权重(weight)
,最大失败次数(max_fails)
,失败等待时间(fail_timeout)
,状态(down, backup), 若留空表示正常状态
.
upstream stream_balance {
server 127.0.0.1:7878 weight=100 fail_timeout=60 max_fails=3;
server 192.168.10.121:3333 backup; #热备
}
下面让我们来个nginx配置python的Django的转发
监听81端口, 监听域名为www.tool.fit
基本的转发需要一个静态文件的读取, 即static, 假设为/www/static
会配置/api
路由的接口专门转发到 192.168.1.100:8000和192.168.1.100:8888, 用ip_hash的策略去做转发
其它的通配路径/
直接转发到http://192.168.1.100:8000
前端网络环境需要我们转发真实IP到后端环境
首先我们打开nginx在线配置,nginx快速配置 - 问蒙在线工具 (tool.fit), 上面已经配置了常见的属性, 现在我们实验下配置过程, 打开该网站, 先进行负载均衡配置
点击负载均衡, 在server的位置点击相应的编辑按钮
根据各个参数填入相应的值, 点击确定, 现在我们已经准备好了一个名叫http_balance名字的负载均衡分别指向192.168.1.100:8000和192.168.1.100:8888
点击相应的location进行参数的更改,
在代理目标里面输http_balance名, 和勾选携带HOST参数, 点击确定, 即可完成配置
最后您应该下载您所需要的Nginx.conf配置文件了, 直接点击下载即可以下载配置.
此时把nginx配置文件放到您的目录下, 即可以使用了, 当然下次编辑您可以直接用加载文件把该文件加载, 就可以在现在的基础上直接编辑了…, 祝您好运