一.Nginx相关指令:
- nginx -c /etc/nginx/nginx.conf
其中参数-c指定nginx启动时加载的配置文件,当然也可以不指定配置文件,省略-c,也可以启动,表示使用默认的配置文件。
- nginx
2.nginx停止
- nginx -s stop 或者
- nginx -s quit 或者
- pkill -9 nginx
例如在我们的编辑环境中已经安装好了nginx,并且已启动,在命令提示符下直接输入nginx -s stop就可以停止了。
3.指令介绍
nginx -h #帮助
nginx -v #显示版本
nginx -V #显示版本和配置信息
nginx -t #测试配置
nginx -q #测试配置时,只输出错误信息
nginx -s stop #停止服务器
nginx -s reload #重新加载配置
二.相关配置:
1.负载均衡(又称为负载分担),英文名称为Load Balance,其意思就是将负载(工作任务)进行平衡、分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
nginx的upstream目前支持4种方式的分配
1)、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2)、weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
3)、ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
4)、fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。
<span style="font-size:18px;"><span style="font-size:18px;"> upstream test1{ ip_hash; server 192.168.12.133:80; server 192.168.12.134:80 down; server 192.168.12.135:8009 max_fails=3 fail_timeout=20s; server 192.168.12.136:8080; }</span></span>
2.相关nginx.conf分离(多个server并引入其配置),解决单台机器多个配置(*注意只能有一个最外层http,/user/local/nginx/conf/server/目录下都是相关server配置)
<span style="font-size:18px;">include /user/local/nginx/conf/server/*;</span>
3.nginx.conf中的相关server_name默认为localhost,如果需要增加域名请对应修改host文件中
127.0.0.1 www.XXX.com
4.相关超时及优化配置
<span style="font-size:18px;">1、系统及内核方面
根据服务器用途,建议系统最小化安装或针对web服务器进行系统内核重新编译;在内核参数的一些优化,如下:
# Add
net.ipv4.tcp_max_syn_backlog = 65536 #表示SYN队列的长度
net.core.netdev_max_backlog = 32768 #进入包的最大设备队列.
net.core.somaxconn = 32768 #listen()的默认参数,挂起请求的最大数量.
net.core.wmem_default = 8388608 #指定了发送套接字缓冲区大小的缺省值
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216 #最大socket写buffer
net.core.wmem_max = 16777216 #最大socket读buffer
net.ipv4.tcp_timestamps = 0 #可以防范那些伪造的sequence号码,关掉可以提高性能。
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2 # 新连接,内核要发送多少个SYN连接请求才决定放弃。
net.ipv4.tcp_tw_recycle = 1 #开启TCP连接中TIME-WAIT sockets的快速回收
net.ipv4.tcp_tw_reuse = 1 #允许将TIME-WAIT sockets重新用于新的TCP连接。
net.ipv4.ip_local_port_range = 5000 65535 #将系统对本地端口范围限制在5000~65000
2、配置方面优化
如编译时使用 --with-cc-opt='-O3' 增加GCC的优化;去掉Nginx的debug模式编译(debug模式会插入很多跟踪和ASSERT之类),这样编译后文件大小降低几倍之多;
nginx配置文件
user www www;
worker_processes 8; #设置为CPU数目(核数),需根据实际情况进行设置。
error_log logs/nginx_error.log crit;
pid logs/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200; #进程能够打开的最多文件描述符数(65535)
events
{
use epoll;
worker_connections 51200; 每个工作进程允许最大的同时连接数
#服务器允许的最大连接数跟worker_processes 、worker_connections 有直接关系。
}
http
{
include mime.types;
default_type application/octet-stream;
#charset gb2312;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k; #客户端请求的Head头缓冲区大小,如果cookie内容较大,需加大
large_client_header_buffers 4 32k;
client_max_body_size 8m; #设置客户端能够上传的文件大小
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
fastcgi_intercept_errors on;
fastcgi_hide_header Pragma;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
autoindex off;
server_tokens off;
server_name_in_redirect off;
include zhuji0.conf; #实现nginx VirtualHost
}
3、Nginx(针对webserver)环境运行php-cgi,可配置php加速器,这样可提高nginx处理能力。可以加入php加速器eaccelerator
4、其他方面
1)由于nginx 中有FastCGI 相关参数,FastCGI 自身的一些配置进行优化也是很重要的,我们的web环境都使用php-fpm 来管理FastCGI,可以修改配置文件中的以下值:
<value name="max_children">300</value> #这可以根据系统负载及服务器访问量情况进行调整。
同时处理的并发请求数,即它将开启最多300 个子线程来处理并发连接。
<value name="rlimit_files">102400</value>
最多打开文件数。
<value name="max_requests">204800</value>
每个进程在重置之前能够执行的最多请求数。
2)修改Nginx的header伪装服务器,这更多是为了服务安全。
3) php-fpm默认静态处理方式会使得php-cgi的进程长期占用内存而无法释放,这有可能导致nginx出错或影响nginx的性能。(max_children\request_terminate_timeout等)</span>
5.什么是反向代理?
三、常见错误
如果启动失败 可以看下logs目录下 error.log 文件里的错误信息。
我在第一次安装的时遇到两个错误,也是最容易碰到的问题,在这里列出来方便大家碰到相同的问题时快速解决。
1. 端口占用问题
我的配置文件里服务侦听的是 80 端口,由于机器上部署了IIS,80端口被默认站点占用,把站点关闭就可以了,这个问题在错误日志里记录是这样的。
2015/01/15 10:44:12 [emerg] 8800#5988: bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)
碰到类似的错误,请确认端口是否被占用或被防火墙屏蔽
2.Nginx所在目录有中文
错误日志大致输出一下内容
2015/01/15 11:55:55 [emerg] 5664#8528: CreateFile() "E:\软件\nginx-1.7.8/conf/nginx.conf" failed (1113: No mapping for the Unicode character exists in the target multi-byte code page)
3. 启用缓存时报错
2015/01/15 17:26:50 [emerg] 17068#20356: shared zone "cache_one" has no equal addresses: 02CF0000 vs 02A20000
2015/01/15 17:26:50 [alert] 11536#11228: worker process 17068 exited with code 1
我一直没有找到解决的方法,有人说重启服务,或者缓存设置大一点就可以了,我试了一下没有用的,官网 原文是这样讲的,只能认为windwos下无解了。
: The cache and other modules which require shared memory support do
: not work in Windows Vista and later due to address space layout
: randomization being enabled in these Windows versions.
最后,感谢以下是参考资料
参考资料:http://www.cnblogs.com/xiaogangqq123/archive/2011/03/02/1969006.html
http://jingyan.baidu.com/article/7e4409533734112fc0e2ef26.html
http://www.cnblogs.com/liping13599168/archive/2011/04/15/2017369.html