centOS7 安装 Nginx

安装部分

懒人就直接使用yum安装Nginx了。

1.创建http:///etc/yum.repos.d/nginx.repo文件 ,拷贝如下代码放入:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

保存退出。

2.运行

yum install nginx* -y

几分钟搞定。

3.设置防火墙

这里使用的centOS7 自带的防火墙

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-service=http
firewall-cmd --reload

4.启动

systemctl start nginx

测试是否安装成功,在终端中执行usr/local/nginx/sbin/nginx, 然后在浏览器中输入localhost,若出现 welcome to nginx 则表示安装成功。
若要关闭Nginx,则在终端中 ps aux | grep nginx ,然后kill 掉相关进程即可。或者输入 usr/local/nginx/sbin/nginx -s stop来停止,该命令 -s 表示将signal 发送到nginx主进程中。

配置部分

现在可以开始设置nginx了,全局配置文件放在/etc/nginx/nginx.conf

vim /etc/nginx/nginx.conf

nginx.conf由多个块组成,最外面的块是main,main包含Events和HTTP,HTTP包含upstream和多个Server,Server又包含多个location:

这里写图片描述

main(全局设置)、server(主机设置)、upstream(负载均衡服务器设置)和 location(URL匹配特定位置的设置)。
main块设置的指令将影响其他所有设置;
server块的指令主要用于指定主机和端口;
upstream指令主要用于负载均衡,设置一系列的后端服务器;
location块用于匹配网页位置。

#是个主模块指令,指定Nginx Worker进程运行用户以及用户组
user  nginx; 
#是个主模块指令,指定了Nginx要开启的进程数。每个Nginx进程平均耗费10M~12M内存。建议指定和CPU的数量一致即可。
worker_processes  1;

#是个主模块指令,用来定义全局错误日志文件。
error_log  /var/log/nginx/error.log warn;
#进程文件
pid        /var/run/nginx.pid;

#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。
#worker_connections也是个事件模块指令,用于定义Nginx每个进程的最大连接数,默认是1024。最大客户端连接数由worker_processes和worker_connections决定,即Max_client=worker_processes*worker_connections。
#在作为反向代理时,max_clients变为:max_clients = worker_processes * worker_connections/4。
#进程的最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统命令“ulimit -n 65536”后worker_connections的设置才能生效
worker_rlimit_nofile 65535;

events {
    #参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。
    use epoll;
    #单个进程最大连接数(最大连接数=连接数*进程数)
    worker_connections 65535;
}

#设定http服务器
http {
    #实现对配置文件所包含的文件的设定,可以减少主配置文件的复杂度
    include       /etc/nginx/conf.d/*.conf;
    #属于HTTP核心模块指令,这里设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式,例如在没有配置PHP环境时,Nginx是不予解析的,此时,用浏览器访问PHP文件就会出现下载窗口。
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
    #用来设置允许客户端请求的最大的单个文件字节数
    client_max_body_size  20m;
    #用于指定来自客户端请求头的headerbuffer大小。对于大多数请求,1K的缓冲区大小已经足够,如果自定义了消息头或有更大的Cookie,可以增加缓冲区大小。这里设置为32K;
    client_header_buffer_size    32K;
    #用来指定客户端请求中较大的消息头的缓存最大数量和大小, “4”为个数,“128K”为大小,最大缓存量为4个128K;
    large_client_header_buffers  4 32k;
    #参数用于开启高效文件传输模式。将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞;
    Sendfile  on;
    #将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞;
    tcp_nopush     on;
    #设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接;
    keepalive_timeout 60;
    #设置客户端请求头读取超时时间。如果超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out(408)”错误;
    client_header_timeout  10;
    #设置客户端请求主体读取超时时间。如果超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out(408)”错误,默认值是60;
    client_body_timeout    10;
    #指定响应客户端的超时时间。这个超时仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接。
    send_timeout          10;

    access_log  /var/log/nginx/access.log  main;

    #gzip  on;

    #upstream是Nginx的HTTP Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡。
    #qq.com负载均衡器的名称
    upstream host.domain{
        ip_hash;
        #upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。
        server 192.168.18.104:82 weight=3;
        server 192.168.18.104:83 weight=3 down;
        server 192.168.18.104:84 weight=3;  max_fails=3  fail_timeout=20s;
        server 192.168.18.104:85 weight=4;;
    }
}

Nginx的负载均衡模块目前支持4种调度算法:

下面进行分别介绍,其中后两项属于第三方的调度方法。

轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响;
Weight:指定轮询权值,Weight值越大,分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下;
ip_hash:每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题;
fair:比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块;
url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的hash软件包。

在HTTP Upstream模块中,可以通过server指令指定后端服务器的IP地址和端口,同时还可以设定每个后端服务器在负载均衡调度中的状态。常用的状态有:

down:表示当前的server暂时不参与负载均衡;
backup:预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻;
max_fails:允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误;
fail_timeout:在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。
注意,当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是weight和backup。

server独立使用conf文件。保存到/etc/nginx/conf.d/文件夹下面,通过上面的include加载进来。

建立文件

 vim /etc/nginx/conf.d/default.conf
#虚拟主机的配置
server {
    #监听端口
    listen       80;
    #域名可以有多个,用空格隔开
    server_name  www.qq.com www.baidu.com;
    #设置网页的默认编码格式
    #charset koi8-r;
    #定义本虚拟主机的访问日志
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    #所有扩展名以.gif、.jpg、.jpeg、.png、.bmp、.swf结尾的静态文件都交给nginx处理,而expires用来指定静态文件的过期时间,这里是30天。
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$  {
               root    /wwwroot/www.qq.com;
               expires 30d;
    }
    #JS和CSS缓存时间设置
    location ~ .*\.(js|css)?$ {
        root    /wwwroot/www.qq.com;
        expires 1d;
    }
    #将upload和html下的所有文件都交给nginx来处理,当然,upload和html目录包含在/web/wwwroot/html目录中。
    location ~ ^/(upload|html)/  {
        root    /web/wwwroot/www.qq.com;
        expires 30d;
    }
    #所有jsp的页面均交由tomcat或resin处理
    location ~ (\.jsp)|(\.do)$ {     
          proxy_pass http://host.domain;    
          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;    
          client_max_body_size 10m;    
          client_body_buffer_size 128k;    
          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;    
    }    
    #启用nginx status 监听页面
    location /nginxstatus {
            stub_status on;
            access_log on;
    }

http://blog.csdn.net/tonyxf121/article/details/7957830博客对反向代理和负载均衡有更详细的介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值