Nginx相关指令及配置

一.Nginx相关指令:

1.nginx启动
  1. nginx -c /etc/nginx/nginx.conf

其中参数-c指定nginx启动时加载的配置文件,当然也可以不指定配置文件,省略-c,也可以启动,表示使用默认的配置文件。

  1. nginx

2.nginx停止

  1. nginx -s stop 或者
  2. nginx -s quit 或者
  3. 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(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。

  1. <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>
  upstream是Nginx的HTTP Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡。在上面的设定中,通过upstream指令指定了一个负载均衡器的名称ixdba.net。这个名称可以任意指定,在后面需要的地方直接调用即可。

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.什么是反向代理?
Nginx的反向代理:
反向代理指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接到客户端,此时代理服务器对外就表现为一个服务器,而此种工作模式类似于LVS-NET模型。
反向代理也可以理解为web服务器加速,它是一种通过在繁忙的web服务器和外部网络之间增加的 一个高速web缓冲服务器,用来降低实际的web服务器的负载的一种技术。反向代理是针对web服务器提高加速功能,所有外部网络要访问服务器时的所有请求都要通过它,这样反向代理服务器负责接收客户端的请求,然后到源服务器上获取内容,把内容返回给用户,并把内容保存在本地,以便日后再收到同样的信息请求时,它会将本地缓存里的内容直接发给用户,已减少后端web服务器的压力,提高响应速度。因此Nginx还具有缓存功能。
 
反向代理的工作流程:
1)用户通过域名发出访问请求,该域名被解析为反向代理服务器的IP地址;
2)反向代理服务器接收用户的请求;
3)反向代理服务器在本地缓存查找是否存在当前用户所请求的内容,找到则直接把内容返回给用户;
4)如果本地没有用户请求的内容,反向代理服务器会以自己的身份去后端服务器请求同样的信息内容,并把信息内容发给用户,如果信息内容是可以被缓存的,则会将该内容缓存在代理服务器的本地缓存中。
 
反向代理的好处:
1)解决了网站服务器对外可见的问题,提高了网站服务器的安全性;
2)节约了有限的IP地址资源,后端服务器均可使用私有IP地址与代理服务器进行通信;
3)加速了网站的访问速度,减轻了真是web服务器的负荷。

三、常见错误

如果启动失败 可以看下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




  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值