主题
快速部署nginx
简介
- nginx是一款轻量级http服务器,同时具备反向代理,可以提供tcp/udp代理的功能
- nginx可运行在x86、ARM等多种不同CPU架构上,同时支持Linux,Windows等主流操作系统
下文展示如何快速在linux系统上部署一个支持https协议的nginx服务器
创建应用目录
以root身份登录或者sudo为root用户,创建应用目录,后续步骤会挂载到容器上
sh
export APP_NAME=webapp
# 创建应用根目录
mkdir /opt/$APP_NAME
# 创建应用配置目录
mkdir /opt/$APP_NAME/conf
# 创建应用SSL证书目录
mkdir /opt/$APP_NAME/cert
# 创建应用html代码目录
mkdir /opt/$APP_NAME/html
# 创建应用日志目录
mkdir /opt/$APP_NAME/log
初始化nginx配置
初始化一个基础容器,从容器中拷贝默认配置
nginx最好指定版本,避免使用latest,避免后续出现配置兼容问题
sh
docker run --name $APP_NAME -d nginx:1.27.1
docker cp $APP_NAME:/etc/nginx/nginx.conf /opt/$APP_NAME/conf
docker cp $APP_NAME:/etc/nginx/conf.d /opt/$APP_NAME/conf
生成自签名SSL证书
注意
使用自签名证书部署的网站在用浏览器访问的时候会有安全警告
sh
cd /opt/$APP_NAME/cert
openssl genrsa -out $APP_NAME.key 2048
openssl req -new -key $APP_NAME.key -out $APP_NAME.csr
openssl x509 -req -in $APP_NAME.csr -signkey $APP_NAME.key -out $APP_NAME.crt
配置https协议
sh
cat << EOF >> /opt/$APP_NAME/conf/conf.d/default.conf
server {
listen 443 ssl;
ssl_certificate /etc/nginx/cert/$APP_NAME.crt;
ssl_certificate_key /etc/nginx/cert/$APP_NAME.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /opt/$APP_NAME/html;
index index.html index.htm;
}
}
EOF
创建应用html代码目录
将网站html代码拷贝到/opt/$APP_NAME/web目录下,如果没有合适的,也可以拷贝默认nginx页面
sh
docker cp $APP_NAME:/usr/share/nginx/html /opt/$APP_NAME
部署nginx
sh
# 删除基础容器
docker rm -f $APP_NAME
# 重建容器并挂载到本地目录
docker run --name $APP_NAME \
-p 80:80 \
-p 443:443 \
-v /opt/$APP_NAME/conf/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /opt/$APP_NAME/conf/conf.d:/etc/nginx/conf.d \
-v /opt/$APP_NAME/cert:/etc/nginx/cert \
-v /opt/$APP_NAME/html:/opt/$APP_NAME/html \
-v /opt/$APP_NAME/log:/var/log/nginx \
-v /etc/localtime:/etc/localtime:ro \
--privileged=true \
--restart=always \
-d nginx:1.27.1