centOS7 安装 Nginx

来源:互联网 发布:股票数据分析研究书籍 编辑:程序博客网 时间:2024/09/21 09:21

安装部分

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

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

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

保存退出。

2.运行

yum install nginx* -y

几分钟搞定。

3.设置防火墙

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

firewall-cmd --permanent --add-port=80/tcpfirewall-cmd --permanent --add-service=httpfirewall-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博客对反向代理和负载均衡有更详细的介绍。

0 0
原创粉丝点击