Nginx 常用命令
# 1、找到nginx的启动文件
cd /usr/local/nginx/sbin
# 2、启动nginx
./nginx
# 3、停止
./nginx -s stop
# 4、安全退出
./nginx -s quit
# 5、重新加载配置文件
./nginx -s reload
# 6、查看nginx进程
ps aux|grep nginx
配置文件详解
公共配置模块
## 1、Nginx 用户及组:用户组。window下不指定
user nobody;
## 2、工作进程:数目。根据硬件调整,通常等于CPU 数量或者2倍于CPU
worker_processes 1;
## 3、错误日志的存放目录
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
## pid(进程标识符):存放路径
pid logs/nginx.pid;
## 指定进程的可以打开的最大描述符:数目。
## 这个指令是指当一个nginx进程打开多个文件描述符数目,理论值应该是最多打开文件数量(ulimit -n)
## 与nginx进程数相处,但是nginx分配请求并不是那么均匀,所以最好与limit -n 的值保持一致
worker_rlimit_nofile 100001;
事件模块
events {
# 使用epoll的I/O模型。linux建议epoll,FreeBSD建议采用kqueue,windos下不指定
use epoll;
# 每个工作进程的最大连接数
worker_connections 1024;
# keepalive 超时时间
keepalive_timeout 60;
# 客户端请求头部最大的缓冲区大小。根据系统的分页大小进行设定,可以通过getconf PAGESIZE 获得
client_header_buffer_size 4k;
# 将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一直
# inactive 是指经过多长时间没有被请求,删除缓存
open_file_cache max=100001 inactive=60s
# 这个是指多场时间检查一次缓存的有效信息
open_file_cache_valid 80s
# 指在inactive参数时间内使用的最少次数,如果不满足,将被移除
open_file_cache_min_uses 1;
}
http模块
http {
# 设定mime类型,类型由mime.type 文件定义
include mime.types;
#
default_type application/octet-stream;
# 日志格式这是
# - &remote_addr和 $http_x_forwarded_for 记录客户端的ip地址
# - &remote_user 记录客户端所用的名称
# - &time_local 记录访问的时间于时区
# - &request 记录请求的url和http协议
# - $body_bytes_sent 记录发送给客户端文件主体内容大小
# - $http_referer 记录从哪个页面连接访问过来的
# - $http_user_agent 记录客户端浏览器的相关信息
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# 用了log_format指令 设置日志格式口,需要access_log指令指定日志文件的存放路径
access_log logs/access.log main;
# 客户端请求头部的的缓冲区大小。可以根据系统分页的大小来设置。getconf PAGESIZE 取得
client_header_buffer_size 4k;
# 客户请求头缓冲大小。nginx默认会用client_header_buffer_size这个buffer来读取header值,如
header过大,它会使用large_client_header_buffers来读取。
large_client_header_buffers 8 128k;
# 指定缓存是否启用
open_file_cache max=102400 inactive=20s;
# 通过nginx上传文件的大小
client_max_body_size 300m;
# sendfile指令指定 nginx 是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度,降低系统uptime。
sendfile on;
# 此选项允许或禁止使用socke的TCP_CORK的选项,此选项仅在使用sendfile的时候使用
tcp_nopush on;
# 后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_connect_timeout 90;
# 连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
proxy_read_timeout 180;
# 后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
proxy_send_timeout 180;
# 设置从被代理服务器读取的第一部分应答的缓冲区大小,通常情况下这部分应答中包含一个小的应答头,默认情况下这个值的大小为指令proxy_buffers中指定的一个缓冲区的大小,不过可以将其设置为更小
proxy_buffer_size 256k;
# 设置用于读取应答(来自被代理服务器)的缓冲区数目和大小,默认情况也为分页大小,根据操作系统的不同可能是4k或者8k
proxy_buffers 4 256k;
# keepalive超时时间
keepalive_timeout 65;
# 负载均衡的配置 四种方式(轮询,权重,ip_hash、fair)
# 在需要使用负载均衡的server中增加 proxy_pass http://anyboot/;
# 1、轮询 (按照访问顺序,注意分配到不同的服务器,服务宕机后,自动剔除)
upstream anyboot {
server 127.0.0.1:8027;
server 127.0.0.1:8028;
}
# 2、权重 (weight和访问比率成正比)
upstream anyboot {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
# 3、ip_hash (每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题)
upstream anyboot {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
# 4、fair (按后端服务器的响应时间来分配请求,响应时间短的优先分配)
upstream anyboot {
server server1;
server server2;
fair;
}
# 配置虚拟机
server {
# 监听的端口
listen 80;
# 访问的域名
server_name localhost;
# 设置被代理的服务器端口,或者套接字,以及URL
proxy_pass http://img_relay$request_uri;
# 以下三行,目的是将代理服务器收到的用户的信息传到真实服务器上
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}