Nginx 超详细讲解以及安装
1.配置说明
Nginx 服务器的配置信息主要集中在 “nginx.conf” 这个配置文件中(默认为 /usr/local/nginx/conf/nginx.conf),所有的可配置项主要为以下几点:
# 运行用户
user nobody;
# 工作进程:数目。根据硬件调整,通常等于 CPU 数量或者 2 倍于CPU。
worker_processes 1;
# 全局错误日志
error_log /var/log/nginx/error.log;
# pid (进程标识符):存放路径
pid /usr/local/nginx/logs/nginx.pid;
# 用于指定一个进程可以打开最多文件数量的描述
worker_rlimit_nofile
#设定http服务器,利用它的反向代理功能提供负载均衡支持
enents {
# 指定最大可以同时接收的连接数量,这里一定要注意
# 最大连接数量是和 worker_processes 共同决定的,理论上是
# worker_processes*worker_connections
worker_connections
# 配置指定 nginx 在收到一个新连接通知后尽可能多的接受更多的连接
multi_accept
# 配置指定了线程轮询的方法,如果是 linux2.6+,使用 epoll,如果是 BSD 如 Mac 请使用 Kqueue
use epoll
}
http {
# 配置 on 让 sendfile 发挥作用,将文件的回写过程交给数据缓冲去完成,而不是放在应用中完成,这样的话在性能提升有有好处
sendfile on
# 让 nginx 不要缓存数据,而是一段一段发送,如果数据的传输有实时性的要求的话可以配置它,发送完一小段数据就立刻能得到返回值,但是不要滥用哦
tcp_nodelay on
# 给客户端分配连接超时时间,服务器会在这个时间过后关闭连接。一般设置时间较短,可以让 nginx 工作持续性更好
keepalive_timeout 10
# 设置请求头的超时时间
client_header_timeout 10
#设置请求体的超时时间
client_body_timeout 10
#指定客户端响应超时时间,如果客户端两次操作间隔超过这个时间,服务器就会关闭这个连接
send_timeout 10
# 指定在当前文件中包含另一个文件的指令
include /etc/nginx/mime.types
# 设置存储访问记录的日志
access_log logs/access.log
# 设置存储记录错误发生的日志
error_log logs/error.log
# 加密协议
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# 是否由服务器决定采用哪种加密算法
ssl_prefer_server_ciphers on;
# 是告诉 nginx 采用 gzip 压缩的形式发送数据。这将会减少我们发送的数据量。
gzip om
# 负载均衡
# max_fails为允许请求失败的次数,默认为1
# weight为轮询权重,根据不同的权重分配可以用来平衡服务器的访问率。
upstream myServer{
# ip_hash; # 指定请求调度算法,默认是 weight 权重轮询调度,可以指定
# ip_hash:根据客户端 ip 的 hash 值决定服务器,这样每个 ip 的客户端固定访问一个服务器
# least_conn:请求将被分配到活动连接数量最少的服务器
# fair:按后端服务器的响应时间来请求分配,响应时间短的优先分配
# url_hash:按访问 url 的 hash 结果来分配请求,按每个 url 定向到同一个后端服务器,后端服务器为缓存时比较有效
server 192.168.1.101:8000 weight=2; # 8000 端口一次, 8001 端口两次。。。循环
server 192.168.1.102:8001 down; # 表示该主机暂停服务
server 192.168.1.103:8002 max_fails=3; # 表示失败最大次数,超过失败最大次数暂停服务
server 192.168.1.104:8003 fail_timeout=20s; # 表示如果请求受理失败,暂停指定的时间之后重新发起请求
server 192.168.1.105:8004 max_fails=3 fail_timeout=20s;
}
# server 模块配置是 http 模块中的一个子模块,用来定义一个虚拟访问主机,也就是一个虚拟服务器的配置信息
server {
listen 80;
server_name localhost 192.168.134.130;
charset utf-8;
access_log logs/access.log;
error_log logs/error.log;
......
# location 模块是 Nginx 配置中出现最多的一个配置,主要用于配置路由访问信息,属于 http 下的 server 下的子模块。
# 在路由访问信息配置中关联到反向代理、负载均衡等等各项功能,所以 location 模块也是一个非常重要的配置模块。
location / { # 表示匹配访问根目录
root /nginx/www; # 用于指定访问根目录时,访问虚拟主机的 web 目录
index index.php index.html index.htm; # 在不指定访问具体资源时,默认展示的资源文件列表
}
# 通过反向代理代理服务器访问模式,通过代理配置让客户端访问透明化。
location / {
proxy_pass http://localhost:8888; # 代理的目标,ip 和端口
proxy_set_header 'X-real-ip $remote_addr';
proxy_set_header Host $http_host; # 代理后,添加的 header
}
# uWSGI 配置
location / {
include uwsgi_params; # 指定 uwsgi 的配置参数
uwsgi_pass localhost:8888; # uWSGI 服务器的 IP 和端口
}
# 静态文件
location /static/ { # url 的起始 path
alias /var/www/test_project/static/; # 指定服务器的静态文件目录
}
}
}
2.安装 Nginx
1、 gcc 安装
yum install gcc-c++
2、 PCRE pcre-devel 安装
yum install -y pcre pcre-devel
3、 zlib 安装
yum install -y zlib zlib-devel
4、 openssl 安装
yum install -y openssl openssl-devel
5、 安装 nginx
wget -c https://nginx.org/download/nginx-1.14.0.tar.gz
6、 下载完成后,进行解压:
tar -zxvf nginx-1.14.0.tar.gz
7、 进入解压后的目录
cd nginx-1.14.0
8、 应用默认配置,执行
# 默认安装
./configure
# 指定一些特定参数的安装
./configure --with-http_ssl_module --prefix="/install/program/nginx" --with-http_stub_status_module
9、 执行编译和安装:
make && make install
10、查看安装路径:
whereis nginx
路径默认在: /usr/local/nginx
11、常用命令:
# 首先进行nginx安装目录下的 sbin 目录
cd /usr/local/nginx/sbin
# 启动nginx
./nginx
# 停止nginx:
# 此方式停止步骤是待nginx进程处理任务完毕进行停止,推荐这个
./nginx -s quit
# 此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程
./nginx -s stop
# 查看nginx进程
ps aux|grep nginx
# 验证配置文件:
./nginx -t
# 修改了nginx的配置文件,如果需要重新加载配置文件,使用:
./nginx -s reload
12、启动 nginx 后,可以查看端口监听情况
netstat -tlnp
13、关闭 linux 防火墙或者开放 nginx 的端口,在浏览器中访问,即可查看到对应的欢迎页面
14、设置 nginx 为开机启动
- 简单方式:
# 编辑文件:
vi /etc/rc.local
# 增加一行
/usr/local/nginx/sbin/nginx
# 设置权限
chmod 755 /etc/rc.local
- service 方式:
编写 service 脚本:
vi /usr/lib/systemd/system/nginx.service
填入以下内容:
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
说明:
- 以上出现的路径必须是绝对路径
- ExecStart、ExecReload、ExecStop 3 个分别对应 启动、重新启动、停止
- PIDFile 对应启动后的 pid 保存文件
设置自启动
systemctl enable nginx.service