CentOS 7 安装配置 Nginx

nginx (engine x) 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 服务器。

安装配置 nginx

安装 nginx

更新 yum 源:

yum -y update

检查是否已安装:

rpm -qa | grep nginx

如果没有,则安装:

yum -y install nginx

如果有,则更新:

yum -y upgrade nginx

查看安装的 nginx 版本:

nginx -v

nginx version: nginx/1.10.2

启动 nginx 服务:

systemctl start nginx

设置 nginx 服务开机启动:

systemctl enable 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 Mon 2017-10-16 01:23:52 CST; 6min ago
Main PID: 19071 (nginx)
CGroup: /system.slice/nginx.service
​ ├─ 19071 nginx: master process /usr/sbin/nginx
​ └─ 19072 nginx: worker process

防火墙设置

查看 http 服务是否已经永久启用:

firewall-cmd --permanent --query-service=http

查看 80/tcp 端口是否已被永久添加到默认区域:

firewall-cmd --permanent --query-port=80/tcp

如果都没有,则添加 http 服务(80/tcp):

firewall-cmd --permanent --add-service=http

查看下次重启(防火墙重新加载、服务器重启或者系统重启)之后永久生效的服务:

firewall-cmd --permanent --list-service

http ssh

重新加载防火墙规则:

firewall-cmd --reload

注意: 阿里云主机需要在安全组规则中添加入方向的 80/tcp 端口。

访问测试

使用服务器 IP 地址访问,看到 nginx 的欢迎页面即说明设置成功。

可以自行修改该欢迎页面:

mv /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.bak
vim /usr/share/nginx/html/index.html

或者设置 403(禁止访问) 返回:

vim /etc/nginx/nginx.conf

找到:

listen       80 default_server;
listen       [::]:80 default_server;
server_name  _;
root         /usr/share/nginx/html;

改成:

listen       80 default_server;
listen       [::]:80 default_server;
server_name  _;
return 403;
#root         /usr/share/nginx/html;

保存退出,重启 nginx 服务:

systemctl restart nginx

管理 nginx

服务管理

# 启动 nginx 服务
systemctl start nginx
# 关闭 nginx 服务
systemctl stop nginx
# 重启 nginx 服务
systemctl restart nginx
# 强制重启 nginx 服务
systemctl --force restart nginx

注意: 修改完 nginx 配置文件需要重启 nginx 服务,如果涉及证书更新,需要强制重启。

配置文件

在 CentOS 7 上,使用 yum 安装的 nginx 默认安装目录为 /etc/nginx ,核心配置文件为 /etc/nginx/nginx.conf ,同时,我们在该核心配置文件中会发现如下代码:

# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;

表示会自动加载所有 /etc/nginx/conf.d 目录下的所有 .conf 结尾的配置文件。因此,只要是在 http 域作用下的配置,我们都可以单独一个配置文件放在 /etc/nginx/conf.d 目录下,nginx 会自动加载。

常见功能配置

开启 gzip 压缩

/etc/nginx/conf.d 目录下面新建配置文件:

vim /etc/nginx/conf.d/gzip.conf

插入配置:

gzip on;
gzip_min_length 1k;
gzip_disable "MSIE [1-6]\.";
gzip_buffers 32 4k;
gzip_http_version 1.1;
gzip_comp_level 1;
gzip_vary on;
gzip_types text/plain text/html text/xml text/css text/javascript application/javascript application/x-javascript application/json image/svg+xml image/x-icon image/gif image/jpeg image/png;

保存退出,重启 nginx 服务:

systemctl restart nginx

代理静态页面

/etc/nginx/conf.d 目录下面新建配置文件:

vim /etc/nginx/conf.d/imzhengfei.com.conf

插入配置:

# imzhengfei.com
server {
  listen 80;
  server_name imzhengfei.com;
  root /home/wwwroot/imzhengfei.com;
  index index.html;
}

保存退出,重启 nginx 服务:

systemctl restart nginx

301 永久重定向

/etc/nginx/conf.d 目录下面新建配置文件:

vim /etc/nginx/conf.d/imzhengfei.com.conf

示例一: 将 http 永久重定向到 https

# http to https
server {
  listen 80;
  server_name imzhengfei.com;
  return 301 https://imzhengfei.com$request_uri;
}

示例二: 将带的 www 二级域名永久重定向到对应的一级域名

# remove www
server {
  server_name www.imzhengfei.com;
  return 301 $scheme://imzhengfei.com$request_uri;
}

保存退出,重启 nginx 服务:

systemctl restart nginx

参考文献