nginx入门手册
一、nginx概况
1、nginx配置文件
- 核心模块:main http server location mail
2、nginx模块
- event module:事件处理机制
- phase handler:称为 handler 模块,处理客户端请求并产生待响应内容
- output filter:也称为 filter 模块,主要是负责对输出的内容进行处理,可以对输出进行修改
- upstream:upstream模块实现反向代理的功能,将真正的请求转发到后端服务器上,并从后端服务器上读取响应,发回客户端
- load-balancer:负载均衡模块,实现特定的算法,在众多的后端服务器中,选择一个服务器出来作为某个请求的转发服务器
二、常用定制
1、存在多个server,都写在nginx.conf,文件太乱
- 使用include指令,引用server文件,支持通配符
2、调整工作线程
- work_processes,一般配置为和cpu核心数相同的数量
3、静态页面读取已失效cookie,不使用cookie
location /xxx { add_header Cache-Control no-cache; add_header Pragma no-cache; add_header Expires 0; }
4、多个服务器负载
- 与server平级配置
upstream kyxm-server { ip_hash; # 绑定同一ip客户端请求到同一服务器 server 10.10.3.94 weight=1; // weight设置负载权重 server 10.10.3.95 weight=1; }
5、哪些模块是比较常用要定制的地方?
- filter 处理请求或响应页面的内容
- upstream 负载服务器配置
- hadler 不常用,但是可以配置请求的负载均衡处理策略
三、配置样例
1、nginx.conf配置文件
点击查看代码
#user nobody; worker_processes 4; # 定制:工作线程数(取cpu核心数即可) #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip模块设置 gzip on; #开启gzip压缩输出 gzip_min_length 1k; #最小压缩文件大小 gzip_buffers 4 16k; #压缩缓冲区 #gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0) gzip_comp_level 2; #压缩等级 gzip_types text/plain application/x-javascript text/css application/xml application/javascript; #压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。 gzip_vary on; #limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用 include vhost/*.conf; # 定制:外部配置文件加载 }
2、定制配置文件
点击查看代码
upstream kyxm-server { ip_hash; # 同一ip客户端转发到指定服务器 server 10.10.3.94 weight=1; # 设置该服务器负荷为1 (back 备份机,down 无可用后使用) server 10.10.3.95 weight=1; } server { listen 8899; server_name localhost; proxy_buffer_size 128k; proxy_buffers 32 128k; proxy_busy_buffers_size 256k; client_max_body_size 2048m; #允许客户端请求的最大单文件字节数(定制:多个服务器就设置大些) client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数, proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时) proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时) proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时) proxy_temp_file_write_size 256k; charset utf-8; proxy_set_header Cookie $http_cookie; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #access_log /var/log/nginx/host.access.log main; location /server/ { proxy_pass http://192.168.8.69:5001/eap/; proxy_cookie_path /eap/ /; # 替换 sub_filter_types 'text/html;charset=UTF-8' '*' text/javascript application/javascript text/plain text/JSON text/css application/json; sub_filter '192.168.8.69' '192.168.5.17'; sub_filter_once off; } location /server1 { root D:\sysware-609\nginx-1.15.8\html; index index.html index.htm; # 定制:禁用cookie缓存,解决切换用户token失败问题 # proxy_pass http://kyxm-server; add_header Cache-Control no-cache; add_header Pragma no-cache; add_header Expires 0; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
参考文档
我从不相信什么懒洋洋的自由,
我向往的自由是通过勤奋和努力实现更广阔的人生,那样的自由才是珍贵的、有价值的。
我相信一万小时定律,我从来不相信天上掉馅饼的灵感和坐等的成就。
做一个自由又自律的人,靠势必实现的决心认真地活着。
我向往的自由是通过勤奋和努力实现更广阔的人生,那样的自由才是珍贵的、有价值的。
我相信一万小时定律,我从来不相信天上掉馅饼的灵感和坐等的成就。
做一个自由又自律的人,靠势必实现的决心认真地活着。
[山本耀司]
本文转载请注明出处
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
2018-01-18 POI导出excel文件样式