CentOS7安装配置Nginx做反向代理

本文主要介绍在centos7系统使用源码和docker镜像两种方式安装和配置Nginx,并列出其中可能遇到的坑

使用源码安装

1、安装编译库和依赖库

yum install -y gcc
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
 yum install -y openssl openssl-devel

2、下载Nginx安装包
访问http://nginx.org/en/download.html下载自己想要的版本,拷贝下载链接,使用wget命令下载,也可以直接用我这个版本

wget http://nginx.org/download/nginx-1.9.9.tar.gz

3、解压
tar -zxvf nginx-1.9.9.tar.gz
4、编译安装
进入解压出来的文件夹内执行命令编译

./configure make && make install

编译完成后会在/usr/local/目录下生成 nginx 文件夹
5、修改配置文件
vi /usr/local/nginx/conf/nginx.conf
主要修改以下几处:
user root;此处有坑:默认注释掉了,即使你用root用户启动Nginx但是worker process的用户还是普通用户,会导致读取静态资源及写入log无权限
error_log /var/log/nginx/error.log; 默认注释了,错误日志存放路径,如果文件夹不存在需要自己创建
access_log /var/log/nginx/access.log; 同上
server{ } 中的配置比较重要,默认监听80端口,可以不用改,location里面是静态资源加载地址,需要改为自己html文件所在路径

添加注释的部分是需要自己修改的,具体如下

user root; # 启动Nginx的用户,普通用户可能会导致打开日志或静态文件无权限 worker_processes 1;error_log /var/log/nginx/error.log; # error日志路径 #error_log logs/error.log notice; #error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024; }http {include mime.types;default_type application/octet-stream;#log_format main '$remote_addr - $remote_user [$time_local] "$request" '# '$status $body_bytes_sent "$http_referer" '# '"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log; sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;#gzip on;server {listen 80; # 监听端口server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location / {root /home/centos/dist; # 你的前端资源文件路径index index.html index.htm; # 默认可以不用改}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html; # 服务器错误页面加载路径location = /50x.html {root html; }}}

6、检查配置并启动Nginx

cd /usr/local/nginx/sbin ./nginx -t # 用于检查配置文件格式是否正确,如果正确显示如下图

CentOS7安装配置Nginx做反向代理插图

#启动Nginx ./nginx ./nginx -s reload # 重启

使用docker安装

1、拉取镜像

docker pull nginx 

2、先run起来一个测试一下

sudo docker run --name test_nginx -p 8081:80 -d nginx

然后用docker ps 命令查一下是否启动成功

CentOS7安装配置Nginx做反向代理插图1

浏览器访问 Nginx服务器IP:8081

CentOS7安装配置Nginx做反向代理插图2

这里应该是没有问题,如果访问不了,尝试下关闭防火墙,然后重启docker

# centos7 查看防火墙状态 firewall-cmd --state# 关闭防火墙 systemctl stop firewalld.service# 重启docker service docker restart

3、上一步测试成功之后,创建目录拉取默认的配置文件,然后删除启动的测试容器

创建目录,用于放置配置文件和静态文件,可以换成自己想要的目录

mkdir -p /usr/local/nginx/conf mkdir -p /usr/local/nginx/www

查看已启动的 docker 容器:

docker ps

拷贝容器内 Nginx 默认配置文件到自己的目录

sudo docker cp 容器ID:/etc/nginx/nginx.conf /usr/local/nginx/conf

CentOS7安装配置Nginx做反向代理插图3

停止需要删除的容器:

docker stop 容器ID

删除容器:

docker rm 容器ID

CentOS7安装配置Nginx做反向代理插图4

4、启动自己项目要用的Nginx并配置

sudo docker run -dit -p 8081:80 --name nginx -v /usr/local/nginx/html:/usr/share/nginx/html -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf nginx /bin/bash

参数-v 表示挂载文件或目录,左边为宿主机位置,右边为容器位置

-it 参数交互运行
-d 参数后台运行

此处有大坑:

我用镜像启动测试容器没有任何问题,但是挂载了宿主机路径之后,启动容器成功立马就退出,没有任何报错,最后查了资料发现下面解释:docker容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为空闲,就会自行退出

所以加了-dit 和后面的bin/bash参数,然后启动成功了

此处又有坑:

启动成功之后访问 IP:端口,发现无法访问,ps -ef | grep nginx 发现并没有Nginx进程,docker ps 发现容器运行正常,没办法只能去容器内查看了

使用容器交互式命令

docker exec -it 容器ID bash

启动Nginx

/usr/sbin/nginx

退出 再次ps -ef | grep nginx 服务发现已经起来了

CentOS7安装配置Nginx做反向代理插图5

然后浏览器输入IP:8081出现403页面,这说明服务已经启动了,只是配置没有修改,加载不到静态文件

CentOS7安装配置Nginx做反向代理插图6

5、最后就是修改配置了,具体修改的地方跟上面使用源码安装差不多,这里就不再放了

修改完之后重启容器

docker restart nginx

原文链接:https://www.ngui.cc/el/184017.html

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享