Linux上安装Nginx与配置

Nginx是什么?

Nginx  是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

Nginx能做什么?

 反向代理 、 负载均衡 、动静分离 、可以作为静态页面的web服务器。

官方测试nginx能够支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定

Nginx和apache的优缺点

1、nginx相对于apache的优点: 轻量级,同样起web 服务,比apache 占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能 高度模块化的设计,编写模块相对简单 。

2.apache 相对于nginx 的优点: rewrite ,比nginx 的rewrite 强大 模块超多,基本想到的都可以找到 少bug ,nginx 的bug 相对较多

3、Nginx 配置简洁, Apache 复杂

4、最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程

Nginx和Tengine 对比

Tengine 是nginx的加强版,封装版,淘宝开源。

官网http://tengine.taobao.org/ 动态模块加载(DSO)支持。加入一个模块不再需要重新编译整个Tengine;

支持SO_REUSEPORT选项,建连性能提升为官方nginx的三倍;

支持SPDY v3协议,自动检测同一端口的SPDY请求和HTTP请求;

流式上传到HTTP后端服务器或FastCGI服务器,大量减少机器的I/O压力;

更加强大的负载均衡能力,包括一致性hash模块、会话保持模块,还可以对后端的服务器进行主动健康检查,根据服务器状态自动上线下线,以及动态解析upstream中出现的域名;

输入过滤器机制支持。通过使用这种机制Web应用防火墙的编写更为方便;

支持设置proxy、memcached、fastcgi、scgi、uwsgi在后端失败时的重试次数 动态脚本语言Lua支持。扩展功能非常高效简单; 支持管道(pipe)和syslog(本地和远端)形式的日志以及日志抽样; 支持按指定关键字(域名,url等)收集Tengine运行状态; 组合多个CSS、JavaScript文件的访问请求变成一个请求; 自动去除空白字符和注释从而减小页面的体积 …….

安装Nginx步骤:

  1. 准备安装环境

yum install gcc-c++

yum install -y pcre pcre-devel

yum install -y zlib zlib-devel

yum install -y openssl openssl-devel

2. 去官网下载 Nginx安装包http://nginx.org/

解压缩到指定的文件夹下。

3.进入到Nginx解压缩目录bin下 执行configure命令

./configure \

--prefix=/usr/local/nginx \

--pid-path=/var/run/nginx/nginx.pid \

--lock-path=/var/lock/nginx.lock \

--error-log-path=/var/log/nginx/error.log \

--http-log-path=/var/log/nginx/access.log \

--with-http_gzip_static_module \

--http-client-body-temp-path=/var/temp/nginx/client \

--http-proxy-temp-path=/var/temp/nginx/proxy \

--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \

--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \

--http-scgi-temp-path=/var/temp/nginx/scgi

4.在当前目录执行make编译命令

5.执行安装命令  make install (该命令会安装到默认目录)--->可以手动指定要安装的目录(make --prefix=/opt/xxx install)

6.安装完成后,进入安装所在目录/usr/local/nginx(这个就是默认的安装目录)

进入启动服务命令所在目录 sbin

启动服务前,先创建一个目录 mkdir /var/temp/nginx -p

然后执行启动命令  ./nginx(关闭服务的命令  ./nginx -s stop)

在浏览器中可以查看是够安装成功

Linux上安装Nginx与配置_第1张图片

Nginx快速重启的命令:./nginx -s reload(经常使用)

关闭命令: 在/usr/local/nginx/sbin目录下 执行  ./nginx   -s stop

修改Nginx为自启动服务

修改linux 启动脚本 /etc/rc.d/rc  加入 :   /usr/local/nginx/sbin/nginx

Nginx配置

event下的一些配置及其意义
 

#单个后台worker process进程的最大并发链接数  worker_connections  1024;    

# 并发总数是 worker_processes 和 worker_connections 的乘积    

# 即 max_clients = worker_processes * worker_connections    

# 在设置了反向代理的情况下,max_clients = worker_processes * worker_connections / 4  为什么    

# 为什么上面反向代理要除以4,应该说是一个经验值    

# 根据以上条件,正常情况下的Nginx Server可以应付的最大连接数为:4 * 8000 = 32000    

# worker_connections 值的设置跟物理内存大小有关     # 因为并发受IO约束,max_clients的值须小于系统可以打开的最大文件数

# 而系统可以打开的最大文件数和内存大小成正比,一般1GB内存的机器上可以打开的文件数大约是10万左右    

# 我们来看看360M内存的VPS可以打开的文件句柄数是多少:    

# $ cat /proc/sys/fs/file-max    

# 输出 34336    

# 32000 < 34336,即并发连接总数小于系统可以打开的文件句柄总数,这样就在操作系统可以承受的范围之内    

# 所以,worker_connections 的值需根据 worker_processes 进程数目和系统可以打开的最大文件总数进行适当地进行设置     # 使得并发总数小于操作系统可以打开的最大文件数目    

# 其实质也就是根据主机的物理CPU和内存进行配置    

# 当然,理论上的并发总数可能会和实际有所偏差,因为主机还有其他的工作进程需要消耗系统资源。    

# ulimit -SHn 65535

nginx.conf配置文件

#定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数。 worker_processes 8;

#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log /var/log/nginx/error.log info;

#进程文件 pid /var/run/nginx.pid;

#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。 worker_rlimit_nofile 65535;

http下的一些配置及其意义

#设定http服务器

http {

include mime.types; #文件扩展名与文件类型映射表

default_type application/octet-stream; #默认文件类型

#charset utf-8; #默认编码

server_names_hash_bucket_size 128; #服务器名字的hash表大小

client_header_buffer_size 32k; #上传文件大小限制

large_client_header_buffers 4 64k; #设定请求缓

client_max_body_size 8m; #设定请求缓

sendfile on; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。

autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。

tcp_nopush on; #防止网络阻塞

tcp_nodelay on; #防止网络阻塞

keepalive_timeout 120; #长连接超时时间,单位是秒

gzip的一些配置及其意义 #gzip模块设置

gzip on; #开启gzip压缩输出

gzip_min_length 1k; #最小压缩文件大小

gzip_buffers 4 16k; #压缩缓冲区

gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)

gzip_comp_level 2; #压缩等级

gzip_types text/plain application/x-javascript text/css application/xml; #压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。

gzip_vary on; #limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用

 

你可能感兴趣的:(Nginx)