简介
Nginx , 是一个免费的、开源的、高性能的 HTTP 和反向代理服务,主要负责负载一些访问量比较大的站点。
Nginx 可以作为一个独立的 Web 服务,也可以用来给 Apache 或是其他的 Web 服务做反向代理。
相比于 Apache,Nginx 可以处理更多的并发连接,而且每个连接的内存占用的非常小。
本教程将会实现在 Centos 7 的服务器上安装和管理 Nginx。
准备
拥有 sudo 权限的用户登录服务器,并且服务器中没有 Apache 或是其他服务正在使用
80(HTTP) 和 443(HTTPS) 端口上,防止端口被占用,造成 Nginx 无法正常启动。
在Centos中安装Nginx
- 在EPEL仓库中有Nginx的安装包。如果没有安装过EPEL,可以通过下面的命令来完成安装
sudo yum install epel-release
以管理员的权限来安装epel-release
- 输入下面的命令来安装Ngix:
sudo yum install nginx
如果是第一次从EPEL仓库中安装软件,yum可能会提示您导入EPEL GPG key。
-
安装完成后,通过以下命令设置开机自启和运行Nginx服务:
-
设置开机自启
systemctl enable nginx
运行命令后,会返回以下内容,表示创建了一个软连接来关联Nginx。
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
-
启动nginx:
systemctl start nginx
-
检查nginx的运行状态:
systemctl status nginx
输出以下结果:
● nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2020-07-24 09:00:59 CST; 2min 30s ago Process: 3702 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) Process: 3698 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) Process: 3697 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) Main PID: 3704 (nginx) CGroup: /system.slice/nginx.service ├─3704 nginx: master process /usr/sbin/nginx └─3706 nginx: worker process Jul 24 09:00:59 iz2zeggjr0d8kt5ik151rdz systemd[1]: Starting The nginx HTTP and reve.... Jul 24 09:00:59 iz2zeggjr0d8kt5ik151rdz nginx[3698]: nginx: the configuration file /...k Jul 24 09:00:59 iz2zeggjr0d8kt5ik151rdz nginx[3698]: nginx: configuration file /etc/...l Jul 24 09:00:59 iz2zeggjr0d8kt5ik151rdz systemd[1]: Failed to parse PID from file /r...t Jul 24 09:00:59 iz2zeggjr0d8kt5ik151rdz systemd[1]: Started The nginx HTTP and rever.... Hint: Some lines were ellipsized, use -l to show in full.
-
-
如果服务器开启了防火墙,需要同时打开80(HTTP)和443(HTTPS)端口
-
通过下面的命令打开这两个端口
firewall-cmd --permanent --zone=pulic --add-service=http firewall-cmd --permanent --zone=pulic --add-service=https firewall-cmd --reload
-
-
systemctl管理Nginx
- 启动Nginx
systemctl start nginx
- 停止Nginx
systemctl stop ngnix
- 重启Nginx
systemctl restart nginx
- 修改Nginx配置,重新加载
systemctl reload nginx
- 设置开机启动Nginx
systemctl enable nginx
- 关闭开机启动Nginx
systemctl disable nginx
- 启动Nginx
Nginx的配置文件和最佳实践
-
通过以上方式安装的nginx,所有相关的配置文件都在/etc/nginx目录中
-
Nginx的主配置文件是/etc/nginx/nginx.conf
-
为了便于维护,建议为每个服务(域名)创建一个单独的配置文件
-
每一个独立的Nignx配置服务必须以.conf结尾,并存储在/etc/nginx/conf.d目录中。可以根据需求创建任意多个独立的配置文件
-
独立的配置文件,一般遵循以下命名规则比如你的域名是 kaifazhinan.com,那么你的配置文件的应该是这样的/etc/nginx/conf.d/kaifazhinan.com.conf,如果你在一个服务器中部署多个服务,当然你也可以在文件名中加上 Nginx 转发的端口号,比如 kaifazhinan.com.3000.conf,这样做看起来会更加友好。
-
如果你的配置中有很多重复的代码,那么建议你创建一个 /etc/nginx/snippets 文件夹,在这里面存放所有会被复用的代码块,然后在各个需要用到的 Nginx 的配置文件中引用进去,这样可以更方便管理和修改。
-
Nginx 日志文件(access.log 和 error.log )位于 /var/log/nginx/ 目录中。建议为每个独立的服务配置不同的访问权限和错误日志文件,这样查找错误时,会更加方便快捷。
-
代码部署文件,一般放在下列为之中的其中一个:
- /home/<user_name>/<site_name>
- /var/www/<site_name>
- /var/www/html/<site_name>
- /opt/<site_name>
- /usr/share/nginx/html
-
配置Nginx
-
编辑nginx.conf文件
vim nginx.conf
# 增加 upstream, 名称为 serverlist upstream serverlist{ server 60.205.211.230:8080 weight=1; # weigh表示权重,越⼤访问的机率越多 server 60.205.211.230:8081 weight=1; } location / { proxy_pass http://serverlist; }
-