nginx 配置整理(初级版)
2016-06-21 18:00
483 查看
1.基础配置解析
2.负载均衡
3.缓存
4.反向代理
工作进程数目,与系统核数相符
日志路径,可以使用不同级别
[ debug | info | notice | warn | error | crit ]
例如
pid存放路径
worker_connections规定每个进程最大连接数
这里,nginx的最大并发数即为
worker_connections * worker_processes
而对于反向代理,由于浏览器建立多个连接,需要除2?
另外,参考事件模型默认为epoll
这里分在均衡的方式有以下几种
1.默认是轮询方式
2.weight,指定轮询几率
3.ip_hash 每个ip固定访问一个后端server
初次以外就是可以设置服务器的状态
down 当前server不参与负载
backup 所有非backup机器down,或者忙的时候请求backup机器
例如
举个负载均衡的例子
更加完整的缓存配置
举自己测过的两个例子
1.代理乌云
2.代理百度
这里需要说一下,由于百度会自动跳转到https://www.baidu.com/,所以我们需要用proxy_redirect来重定向一下
2.负载均衡
3.缓存
4.反向代理
基础配置解析
worker_processes 1;
工作进程数目,与系统核数相符
error_log logs/error.log;
日志路径,可以使用不同级别
[ debug | info | notice | warn | error | crit ]
例如
error_log logs/error.log notice;
pid logs/nginx.pid;
pid存放路径
events { ##参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。 use epoll; worker_connections 1024; }
worker_connections规定每个进程最大连接数
这里,nginx的最大并发数即为
worker_connections * worker_processes
而对于反向代理,由于浏览器建立多个连接,需要除2?
另外,参考事件模型默认为epoll
http { #包含一个文件描述了:不同文件后缀对应的MIME,即文件扩展名与文件类型映射表 include mime.types; #制定默认MIME类型为八进制字节流 default_type application/octet-stream; #指令 access_log 指派路径、格式和缓存大小。 #access_log off; #开启调用Linux的sendfile(),提供文件传输效率 sendfile on; #是否允许使用socket的TCP_NOPUSH或TCP_CORK选项,防止网络阻塞建议打开 tcp_nopush on; ##防止网络阻塞 建议打开 tcp_nodelay on; #指定客户端连接保持活动的超时时间,在这个时间之后,服务器会关掉连接。 keepalive_timeout 65; #设置gzip,压缩文件 #gzip on; #为后端服务器提供简单的负载均衡 upstream apaches { server 127.0.0.1:8001; server 127.0.0.1:8002; } #配置一台虚拟机 server { listen 8012; server_name localhost; location / { proxy_pass http://apaches; #重写uri rewrite ^/index1 /index2.html last; } } }
配置负载均衡
主要是依靠upstream ,来构建服务器组这里分在均衡的方式有以下几种
1.默认是轮询方式
2.weight,指定轮询几率
upstream linuxidc{ server 10.0.0.77 weight=5; server 10.0.0.88 weight=10; }
3.ip_hash 每个ip固定访问一个后端server
upstream favresin{ ip_hash; server 10.0.0.10:8080; server 10.0.0.11:8080; }
初次以外就是可以设置服务器的状态
down 当前server不参与负载
backup 所有非backup机器down,或者忙的时候请求backup机器
例如
upstream bakend{ #定义负载均衡设备的Ip及设备状态 ip_hash; server 10.0.0.11:9090 down; server 10.0.0.11:8080 weight=2; server 10.0.0.11:6060; server 10.0.0.11:7070 backup; }
举个负载均衡的例子
upstream test{ server hd0:80; server hd2:80; server hd1:1001; } server { listen 12134; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location ^~/admin/ { root html; index index.html index.htm; } location / { proxy_pass http://test; }
缓存
主要配置以下项proxy_cache_path 缓存区配置 proxy_buffering 打开缓存 proxy_cache 设置缓存区 proxy_cache_valid 返回码为多少时候进行缓存 proxy_cache_key 缓存的key
#配置缓存路径,缓存区为cache_one proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache_one:20m inactive=1d max_size=100m; server { listen 12134; server_name localhost; location ^~/admin/ { root html; index index.html index.htm; } location / { #后台访问跳转 proxy_pass http://test; #打开缓存区 proxy_buffering on; #指定缓存区 proxy_cache cache_one; #设定缓存对象以及保持时间 proxy_cache_valid 200 304 301 302 10d; proxy_cache_valid any 1d; #设定缓存key值 proxy_cache_key $host$uri$is_args$args; #expires 300s; }
更加完整的缓存配置
#cache begin proxy_buffering on; proxy_cache_valid any 10m; proxy_cache_path /data/cache levels=1:2 keys_zone=my-cache:8m max_size=1000m inactive=600m; proxy_temp_path /data/temp; proxy_buffer_size 4k; proxy_buffers 100 8k; #cache end location / { proxy_pass http://apachephp; proxy_cache my-cache; proxy_cache_valid 200; #Proxy Settings proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_max_temp_file_size 0; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; ##End Proxy Settings }
反向代理
代理主要配置的有举自己测过的两个例子
1.代理乌云
location / { proxy_pass http://wooyun.org; proxy_cookie_domain wooyun.org hd3; proxy_buffering off; proxy_set_header X-Real-IP $http_user_agent; proxy_set_header User-Agent $http_user_agent; proxy_set_header referer "http://wooyun.org$request_uri"; }
2.代理百度
location / { proxy_redirect https://www.baidu.com/ /; proxy_cookie_domain baidu.com hd3; proxy_pass https://www.baidu.com; proxy_set_header Host "www.baidu.com"; proxy_set_header Accept-Encoding ""; proxy_set_header User-Agent $http_user_agent; proxy_set_header Accept-Language "zh-CN"; sub_filter www.baidu.com hd3; sub_filter_once off; proxy_buffering on; }
这里需要说一下,由于百度会自动跳转到https://www.baidu.com/,所以我们需要用proxy_redirect来重定向一下
相关文章推荐
- nginx代理指定目录
- 访问Nginx发生SSL connection error的一种情况
- Nginx+Naxsi部署专业级Web应用防火墙
- CentOS 6.2实战部署Nginx+MySQL+PHP
- nginx中http核心模块的配置指令2
- nginx中http核心模块的配置指令3
- nginx中http核心模块的配置指令4
- nginx中http的fastcgi模块的配置指令1
- 许多数据中心的工作者很满意他们的工作,将鼓励他们的孩子继续从事这份工作
- Nginx 学习笔记(一)
- 零编程经验的我是如何找到工作的
- 网站502与504错误分析
- 用zabbix监控nginx_status状态
- 艰难完成 nginx + puma 部署 rails 4的详细记录
- 把Lua编译进nginx步骤方法
- web 应用中常用的各种 cache详解
- Linux系统上配置Nginx+Ruby on Rails+MySQL超攻略
- window+nginx+php环境配置 附配置搭配说明