博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
安装Nginx
阅读量:7041 次
发布时间:2019-06-28

本文共 6412 字,大约阅读时间需要 21 分钟。

  hot3.png

一.下载组件和创建用户
1.安装必须组件
yum -y install gcc openssl-devel pcre-devel zlib-devel
2.创建用户
groupadd -r nginx
useradd -r -g nginx -s /bin/false -M nginx
二.下载安装Nginx
1.下载Nginx
wget http://nginx.org/download/nginx-1.5.4.tar.gz
tar zxfv nginx-1.5.4.tar.gz
cd nginx-1.5.4

2.安装Nginx

/var/tmp/nginx
mkdir /var/tmp/nginx/client
./configure \
--prefix=/usr \--sbin-path=/usr/sbin/nginx \--conf-path=/etc/nginx/nginx.conf \--error-log-path=/var/log/nginx/error.log \--http-log-path=/var/log/nginx/access.log \--pid-path=/var/run/nginx/nginx.pid \--lock-path=/var/lock/nginx.lock \--use=nginx \--grou=nginx \--with-http_ssl_module \--with-http_flv_module \--with-http_stub_status_module \--with-http_gzip_static_module \--http-client-body-temp-path=/var/tmp/nginx/client/ \--http-proxy-temp-path=/var/tmp/nginx/proxy/ \--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \--http-scgi-temp-path=/var/tmp/nginx/scgi \--with-pcre

三.Nginx全局设置

#user  nobody;worker_processes  1;                    #根据CPU的数量来调整大小 #error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  info;#pid        logs/nginx.pid; worker_rlimit_nofile 65535;events {    use epoll;    worker_connections  65536;}
ulimit -n 65535    #设置连接数
 

user是个主模块指令,指定Nginx Worker进程运行用户以及用户组,因为我们在编译安装的时候已经设置过了,这里就标注。
Worker_processes是个主模块指令,指定了Nginx要开启的进程数,如果是多核CPU,建议指定和CPU数量一样多的进程即可。
error_log用来指定全局错误日志文件
pid用来指定进程pid的存储文件位置
worker_rlimit_nofile用于指定一个Nginx进程可以打开的最多文件描述符数目,这里是65535,需要使用指令“ulimit -n 65535”来设置
events指令用来设定Nginx的工作模式及连接数上限
use用来指定Nginx的工作模式,其中select和poll都是标准的工作模式,kqueue和epoll都是高效的工作模式,不同的是epoll用在LINUX平台上,而kqueue用在BSD系统中。对于LINUX系统,epoll工作模式是首选。
worker_connections也是个事件模块指令,用于定义每个进程的最大连接数,默认是1024.

四.HTTP服务器配置

http {    include       mime.types;    default_type  application/octet-stream;        log_format main '$remote_addr - $remote_user [$time_local] '        '"$request" $status $bytes_sent '        '"$http_referer" "$http_user_agent" '        '"$gzip_ratio"'        log_format download '$remote_addr - $remote_user [$time_local]'        '"$request" $status $bytes_sent '        '"$http_referer" "$http_user_agent" '        '"$http_range" "$sent_http_content_range"';        client_max_body_size 20m;        client_header_buffer_size 32k;        large_client_header_buffers 4 32k;        tcp_nopush on;        tcp_nodelay on;        keepalive_timeout 60;        client_header_timeout 10;        client_body_timeout 10;        send_timeout 10;
include是个主模块指令,实现对配置文件所包含的文件的设定,可以减少主配置文件的复杂度。
default_type属于HTTP核心模块指令,这里设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式,例如在没有配置PHP环境时,Nginx是不予解析的,此时,用浏览器访问文件就会出现下载窗口。
clinent_max)body_size用来设置允许客户端请求的最大的单个文件字节数。
client_header_buffer_size用于指定来自客户端请求头的headerbuffer的大小。
large_clientheader_buffers用来指定客户端请求中较大的消息头的缓存最大数量和大小,“4”为个数,“128k”为大小,最大缓存为4个128kb
sendfile参数用于开启高效文件传输模式。
keepalive_timeout用于设置客户端连接保持活动的超过时间。
client_header_timeout用与设置客户端请求头读取超过时间。
client_body_timeout用与设置客户端请求主体读取超过时间,默认为60。
sent_timeout用与指定响应客户端的超时时间。
五.HttpGzip模块配置

gzip  on;        gzip_min_length 1k;        gzip_buffers 4 16k;        gzip_http_version 1.1;        gzip_comp_level 2;        gzip_types text/plain application/x-javascript text/css application/xml;        gzip_vary on;
gzip用于设置开启关闭gzip模块。
gzip_min_length用于设置允许压缩的页面最小字节数,页面字节数从header头的CONTENT-LENGTH中获取。
gzip_buffers表示申请4个单位为16k的内存作为压缩结果流缓存。
gzip_http_version用于设置识别HTTP协议版本,默认是1.1,目前大多浏览器已经支持gzip压缩。
gzip_comp_level用来指定gzip压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理最慢,也比较消耗CPU。
gzip_types用来指定压缩类型,无论是否指定,“text/html”类型总是会被压缩的。
gzip_vary选项可以让前端缓存服务器缓存经过gzip压缩的页面,例如,用Squid缓存经过Nginx压缩的数据。
六.负载均衡配置

upstream myserver{        ip_hash ;        server 192.168.3.7:80 ;        server 192.168.3.8:80 weight=3 max_fails=3 fail_timeout=20s ;        server 192.168.3.9:80 weight= 1 max_fails=3 fail_timeout=20s ;        server 192 . 168.3.10:80 weight=4 max_fails=3 fail_timeout=20s;        }
upstream是NGINX的http Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡。
Nginx的负载均衡模块目前支持4种调度算法:
轮询(默认)
Weight。指定轮询权值,Weight越大,分配到的访问几率就越高,主要用于后端每个服务器性能不均的情况下。
ip_hash,每个请求按访问ip的hash结果分配,这样来自同一个ip的访客固定访问一个后端服务器,有效解决了动态网友存在的session共享问题
fair。这是比上面两个更加智能的负载均衡算法。
url_hash。此方法按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。
down,表示当前server暂时不参与负载均衡
backup,预留的备份机器
max_fails,允许请求失败的次数,默认为1.
fail_timeout,在经历了max_fails次失败后,暂停访问的时间。
如果像实现故障转移还需要添加模块http proxy模块
七.虚拟主机配置

server {        listen  80;        server_name     www.abc.com;        access_log      /var/log/abc.access.log;        location / {        index index.html;        root /usr/html/abc/;        }     }        server {        listen  80;        server_name     www.abc1.com;        access_log      /var/log/abc1.access.log;        location / {        index index.html;        root /usr/html/abc1/;        }     }        server {        listen  80;        server_name     www.abc2.com;        access_log      /var/log/abc2.access.log;        location / {        index index.html;        root /usr/html/abc2/;        }     }
server标志定义虚拟主机开始;
listen用于指定虚拟主机的服务端口;
server_name用来指定IP地址或者域名,多个域名之间用空格分开;
index用于设定访问的默认首页地址;
root指令用于指定虚拟主机的网页根目录,这个目录可以是绝对路径,也可以是相对路径;
charset用于设置网页的默认编码格式。
八.URL匹配设置

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {        root /usr/html/abc/;        expires 30d;        }
这段设置是通过location指令来对网页URL进行分析处理,所有扩展名为.gif,jpg,jpeg,png,bmp,swf的静态文件都交给nginx处理

九.StubStatus模块配置

server {        listen  80;        server_name     mail.abc.com;        root /usr/html/mail;        access_log      /var/log/abc.access.log;        location / {        index index.html;        }        location /nginx_status {                stub_status on;                index index.html                access_log off;                auth_basic "Restricted";                auth_basic_user_file /etc/nginx/htpasswd;        }     }
stub_status为on表示启用stubstatus的工作状态统计功能。
access_log用来指定stubstatus模块的访问日志文件。
auth_basic是nginx的一种认证机制。
auth_basic_user_file用来指定密码文件

mkdir /usr/html/mail/
yum -y install httpd
htpasswd -c /etc/nginx/htpasswd lisi
New password:
Re-type new password:
Adding password for user lisi
chown nginx.nginx /etc/nginx/htpasswd

访问 ip or domain/nginx_status
Active connections: 2
server accepts handled requests
2 2 3
Reading: 0 Writing: 1 Waiting: 1
Active connections表示当前活跃的连接数,第三行的三个数字表示Nginx当前总共处理了2个连接,成功创建了2吃握手,总共处理了3个请求。最后一行的Reading表示Nginx读取到客户端Header信息数,Writing表示Nginx返回给客户端的header信息数,Waiting表示已经处理完.正在等候下一次请求指令时的驻留连接数。

转载于:https://my.oschina.net/f91jty/blog/168319

你可能感兴趣的文章
Vue-入门
查看>>
delegate 和 block 的区别
查看>>
网格贴图合并
查看>>
如何读/写论文???
查看>>
Code Kata:大整数四则运算—乘法 javascript实现
查看>>
python学习-Pillow图像处理
查看>>
ThreadLocal
查看>>
学习myBatis - 如何配置myBatis
查看>>
LOJ #6053. 简单的函数
查看>>
[PA2014]Druzyny
查看>>
MapReduce - reduce function problem
查看>>
mysql 获取 汉字字段首字母(转)
查看>>
最佳加法表达式
查看>>
springboot profile 日志配置
查看>>
C++typedef的详细用法
查看>>
UML学习总结(2)——StartUML 各种类图的例子
查看>>
Spring MVC学习总结(2)——Spring MVC常用注解说明
查看>>
Java加密算法(一)——BASE64与单向加密算法MD5&SHA&MAC
查看>>
Django REST framework 自定义(认证、权限、访问频率)组件
查看>>
关于mysql存储过程的definer的问题
查看>>