nginx概述
Nginx
,一种高性能的http服务器软件。俄国人发明,与httpd相比,它的特点是并发能力强,资源消耗小。
其他常见的http服务端软件还有:Httpd和IIS
Httpd就是Apache,IIS是“微软”的产品,是Windows Server中默认提供的http服务器。
yum安装
centos通过nfinx官网的yum源安装稳定版
1.安装先决条件:sudo yum install yum-utils
2.创建源文件:vim /etc/yum.repos.d/nginx.repo
写入:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
3.安装:sudo yum install -y nginx
源码安装
安装依赖
yum -y install pcre-devel gcc gcc-c++ autoconf automake make zlib-devel openssl openssl-devel
下载
wget -c http://nginx.org/download/nginx-1.16.1.tar.gz
//版本自己选择
解压
tar -zxvf nginx-1.16.1.tar.gz
配置编译
cd nginx-1.16.1 # 进入到解压目录
./configure --prefix=/usr/local/nginx
–prefix 用于指定nginx编译后的安装目录
要反向代理tcp的话:
./configure --prefix=/usr/local/nginx --with-stream
相关链接:nginx unknown directive “stream”
编译安装
make && make install
进入安装目录,启动服务器
cd /usr/local/nginx
初始安装完成,该目录只有4个文件夹:conf
html
logs
sbin
- conf 配置文件目录
- html 网站的静态文件目录
- sbin 一些可执行文件目录,例如启动nginx就要执行该文件夹下面nginx命令
cd sbin
./nginx -c /usr/local/nginx/conf/nginx.conf //启动 后面的-c参数是说指定配置文件
ps -ef | grep nginx //可查看进程 浏览器可访问
软链接
目前启动、重启、关闭我们都要进入/usr/lcoal/nginx/sbin下目录通过./nginx 执行,更简单的办法就是创建一个软链接到/usr/bin/nginx
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
重启终端,在任意目录执行nginx都行了
命令补充
nginx -s reload //热更新配置
nginx -s stop //停止服务
nginx -t //检测配置文件是否合法
nginx –V //查看版本及编译信息
添加新的模块
如上我们配置nginx时,没有加一个模块。那么如何在安装nginx后添加一个新模块呢?
1、进入nginx的源码目录
2、重新执行配置
./configure --prefix=/usr/local/nginx --with-http_ssl_module
// 本次我们加上了http_ssl_module模块,当然还是是安装到usr/local/nginx
3、执行make
注意!!!千万别执行make install,不要回覆盖安装!!!!!
执行make完毕后,会有一个objs目录,然后在objs目录会有一个新的nginx执行文件
4、备份旧的nginx程序,并将新的nginx复制到旧的目录
5、测试新的nginx程序是否正确
cd /usr/local/nginx/sbin #进入/usr/local/nginx/sbin
./nginx -t
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak #备份旧的
cp -f nginx /usr/local/nginx/sbin/nginx # 复制新的nginx到/usr/local/nginx
# 执行上面这条复制命令,确保在objs目录,不然路径不对
6、重启nginx
./nginx -s reload
7、查看模块是否已安装
./nginx -V
8、重启Nginx
./nginx -s quit
./nginx
nginx配置文件
同时支持tcp和http反向代理功能
worker_processes auto;
error_log /var/log/nginx/error.log;
events {
# 每一个worker进程能够处理的最大连接数(与客户端的连接数+与上游服务器的连接数)
worker_connections 8096;
}
# tcp 反向代理
stream {
upstream tcpCluster {
least_conn;
server 10.131.0.5:8000;
server 10.131.0.6:8000;
}
server {
listen 9199 backlog=10000;
proxy_pass tcpCluster;
proxy_timeout 3s;
proxy_connect_timeout 5s;
}
}
# http 反向代理
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
# 一个keepalive连接可以发起的最大请求数
keepalive_requests 1000;
access_log off;
# 定义了一个上游服务器集群
upstream upCluster{
# 使用最少连接数调度算法
least_conn;
# 每个worker进程与上游服务器之间拥有的最大空闲keepalive连接数
keepalive 100;
server 10.131.0.5:8000;
server 10.131.0.6:8000;
}
server {
# backlog 的值需要与net.core.somaxconn相同
listen 9188 backlog=10000;
location / {
# 反向代理到上面所定义的上游服务器集群
proxy_pass http://upCluster;
# 不论客户端与nginx之间是长连接还是短连接;nginx和上游服务器之间一律用长连接
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
}
tcp端口: 9199
http端口: 9188
proxy_timeout ,proxy_connect_timeout ,least_conn等参数设置以服务而定,具体含义参见官网
参考文档:
Linux[CentOS]下编译安装Nginx 步骤
nginx unknown directive “stream”
Nginx 架构浅析
增加nginx虚拟主机配置文件(conf.d)