您的位置:首页 > 运维架构 > Nginx

nginx 配置整理(初级版)

2016-06-21 18:00 483 查看
1.基础配置解析

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