Nginx 使用记录

Nginx 使用记录

项目部署阶段开始接触 Nginx,主要用它做反向代理和前端静态资源托管。记录安装方式和几个用过的配置,备查用。


安装配置

网上大多数教程是官方包编译安装,这里记录 yum 安装方式和 Docker 中使用,实际项目用得更多。

一、Linux 直接安装(yum 方式)

1、添加源

CentOS 7 默认没有 Nginx 源,从 Nginx 官网添加:

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

2、通过 yum search nginx 确认源添加成功,然后安装:

yum install -y nginx

3、启动并设置开机自动运行

systemctl start nginx.service
systemctl enable nginx.service

4、查看版本和主要路径

nginx -v
# nginx version: nginx/1.18.0

5、常用路径

Nginx 配置路径:/etc/nginx/
PID 目录: /var/run/nginx.pid
错误日志: /var/log/nginx/error.log
访问日志: /var/log/nginx/access.log
默认站点目录:/usr/share/nginx/html

新增 *.conf 放到 /etc/nginx/conf.d/ 下,nginx -s reload 即可生效。

修改配置后先验证语法:nginx -t


二、Docker 中安装

docker pull nginx:1.18

# 先启动一个临时容器,把配置文件拷出来
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-d nginx:1.18

docker container cp nginx:/etc/nginx /mydata/nginx/
mv /mydata/nginx/nginx /mydata/nginx/conf

# 停掉临时容器,重建带配置映射的正式容器
docker stop nginx && docker rm nginx

docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.18

先跑一次再把配置文件拷出来挂载,是避免直接挂载空目录把容器内配置覆盖掉的常见做法。


常规配置示例

# 静态站点
server {
listen 80;
server_name www.example.com;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

# 文件服务
server {
listen 80;
server_name file.example.com;

location / {
root /usr/share/nginx/html/file;
}
}

# 反向代理特定路径到后端服务
server {
listen 80;
server_name api.example.com;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
}

location ~ /wx/ {
proxy_pass http://后端服务IP:端口;
}
}