【Linux】yum源安装nginx服务
前言
- centos 通过yum命令安装nginx服务,并开放监听端口、设置开机自启等
- nginx文件划分
- /etc/nginx 存放nginx相关配置,一般用来编辑内部的nginx.conf文件
- /var/log/nginx 存放nginx默认的日志,可以通过查看access.log文件浏览相关内容
- /usr/share/nginx 一般是用来放置需要nginx转发的静态资源文件
- systemctl操作nginx服务
- systemctl status nginx 查看nginx服务状态
- systemctl start nginx 启动nginx服务
- systemctl reload nginx 重新加载nginx服务
- nginx自己的命令
- nginx -t 校验nginx.conf配置是否正确
- /usr/sbin/nginx 启动nginx
- /usr/sbin/nginx -s reload 重新加载nginx配置文件
- /usr/sbin/nginx -s quit 完整退出nginx
1、 配置yum源并进行安装
如有其他Linux版本需求,可以跳转官网nginx: Linux packages文档,选取适合的linux版本方式,按照文档步骤进行安装
我自己的服务器是centos7,所以使用的是文档中
RHEL/CentOS
的yum源方式进行安装
-
先执行
yum info nginx
命令检查有无nginx信息(如果可以看到nginx的信息,则点此跳转安装步骤即可) -
运行命令,安装必备组件
yum install yum-utils -y
-
在yum存储库位置,创建
nginx.repo
文件,并将以下内容复制进文件中并保存-
vi /etc/yum.repos.d/nginx.repo
-
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
-
-
(忽略此步骤)默认情况下,使用稳定nginx软件包的存储库,即
nginx-stable
。如果你想使用主线nginx软件包(最新版本),请运行以下命令:- yum-config-manager --enable nginx-mainline
- 一般情况下忽略这一步骤,使用稳定的nginx即可
-
yum repolist all|grep nginx
,可以看到nginx的yum源已被添加至仓库 -
yum info nginx
,已经可以看到nginx的软件信息了 -
这时候我们运行安装命令即可
yum install nginx
- 当系统提示您接受 GPG 密钥时,请验证指纹是否匹配,如果匹配,请接受它。
573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62
2、 nginx服务启动
使用yum源安装nginx,会自动把nginx加入linux的服务中,避免了手动注册到服务的过程
-
nginx服务启动
systemctl start nginx
启动nginx服务systemctl status nginx
查看nginx运行状态
- 如果在关闭nginx时出现
nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)
错误,则需要手动执行kill -9 pid
命令依次关闭master process
和worker process
两个进程,然后重新启动nginx即可- 建议nginx启动和关闭使用同一套命令,即使用
systemctl
开启,就使用systemctl
关闭,两套命令不要穿插使用,避免出现不必要的问题- 启动时出现这个错误:
Starting nginx: nginx: [emerg] bind() to 0.0.0.0:**** failed (13: Permission denied)
,建议关闭selinux服务
-
设置nginx服务开机自启
-
systemctl enable nginx
允许开机自启 -
systemctl is-enabled nginx
查看nginx服务是否允许开机自启
-
-
最后,编辑nginx的相关配置文件,使用nginx命令重新加载服务即可
- 此时使用
systemctl reload nginx
或者/usr/sbin/nginx -s reload
命令都可以
- 此时使用
#nginx日志格式示例
log_format main '$remote_addr - $remote_user [$time_local] '
'$scheme://$http_host "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
'[$request_time $upstream_response_time]';
# 请求访问的日志持久化位置,main表示使用此日志格式输出
access_log /var/log/nginx/access.log main;
#server配置示例
server {
listen 80;
server_name one.sample.com;
root html;
index index.html;
location /test {
# 请求host
proxy_set_header Host $http_host;
# 请求ip
proxy_set_header X-Real-IP $remote_addr;
# 请求协议
proxy_set_header X-Scheme $scheme;
# 代理服务器
proxy_pass http://localhost:3000;
}
}
3、 防火墙开放监听的端口
- centos7以上的版本会有selinux,需要关闭它
- 开放监听的8090端口
firewall-cmd --add-port=8090/tcp --permanent
#永久添加80端口例外(全局)firewall-cmd --remove-port=8090/tcp --permanent
#永久删除80端口例外(全局)
- 修改配置后,重启防火墙
firewall-cmd --reload
- 查看端口是否开放
firewall-cmd --query-port=8090/tcp
- 或者使用
firewall-cmd --list-all
查看激活区域的端口开放情况 - 更多防火墙命令,请查阅【Linux】防火墙命令 - 中国制造 - 博客园 (cnblogs.com)
4、 Nginx作为负载均衡
1.负载均衡的介绍
在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器。
负载均衡用于从 "upstream" 模块定义的后端服务器列表中选取一台服务器接受用户的请求。
2.负载均衡的基本实例
(1) upstream模块
一个最基本的upstream模块如下:
#动态服务器组, server是后端服务器,my_server是自定义的服务器组名称。
upstream my_server {
server localhost:8001;
server localhost:8002;
server localhost:8003;
}
(2) 反向代理
在upstream模块配置完成后,要让指定的访问反向代理到服务器组。
server {
listen 80;
server_name www.example.com;
root html;
index index.html;
location / {
# 反向代理到定义好的服务器组my_server
proxy_pass http://my_server;
}
}
(3) 完整配置
http {
upstream my_server {
server localhost:8001;
server localhost:8002;
server localhost:8003;
}
server {
listen 80;
server_name netdisk.longfor.com;
root html;
index index.html;
location / {
# 反向代理到定义好的服务器组my_server
proxy_pass http://my_server;
}
}
}
3. 负载均衡策略
(1) 轮询(默认方式)
表示每个请求按时间顺序逐一分配到不同的后端服务器。
upstream my_server {
server localhost:8001;
server localhost:8002;
}
(2) weight(权重方式)
表示在轮询策略的基础上指定轮询的服务器的权重,默认为1,权重越高分配到需要处理的请求越多。
upstream my_server {
server localhost:8001 weight=1;
server localhost:8002 weight=2;
}
(3) ip_hash
表示指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session
会话。这样每个访客都固定访问一个后端服务器,可以解决session
不能跨服务器的问题。
upstream my_server {
ip_hash;
server localhost:8001;
server localhost:8002;
}
备注:
在nginx版本1.3.1之前,不能在ip_hash
中使用权重(weight
)。
ip_hash
不能与backup
同时使用。
此策略适合有状态服务,比如session
。
当有服务器需要剔除,必须手动down
掉。
(4) least_conn
表示把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn
这种方式就可以达到更好的负载均衡效果。
upstream my_server {
least_conn;
server localhost:8001;
server localhost:8002;
}
(5) down
表示当前的server暂时不参与负载均衡。
upstream my_server {
server localhost:8001 down;
server localhost:8002;
server localhost:8003;
}
(6) backup
表示预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因 此这台机器的压力最轻。
upstream my_server {
server localhost:8001 backup;
server localhost:8002;
server localhost:8003;
}