本文环境
docker
: 3.4.2
nginx
: 1.21.6
下载nignx
docker pull nginx
启动nginx
docker run --name nginx -p 80:80 -d nginx
拷贝容器里配置文件
在你服务器目录下创建conf,html,log三个文件夹 我这里是etc/nginx
# 创建文件夹
mkdir -p ./nginx/{conf,html,logs}
将容器内的nginx.conf
与default.conf
文件分别拷贝到/etc/nginx(根据你目录来)下,分别执行
# 拷贝 nginx.conf
docker cp image_id:/etc/nginx/nginx.conf /etc/nginx
# 拷贝 default.conf
dokcer cp image_id:/etc/nginx/conf.d/default.conf /etc/nginx
删除原来nginx容器
# image_id是指你容器id
docker stop image_id
docker rm image_id
启动
docker run --name nginx -p 80:80 -v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf -v /etc/nginx/logs:/var/log/nginx -v /etc/nginx/default.conf:/etc/nginx/conf.d/default.conf -v /etc/nginx/html:/usr/share/nginx/html -d nginx
--name 容器名字
-v 挂载文件
# :/是指容器里面的路径 将容器nginx.conf文件挂载到自己服务器目录下的nginx.conf
-v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf
# :/是指容器里面的路径 将容器log挂载到自己服务器目录下的logs
-v /etc/nginx/logs:/var/log/nginx
# :/是指容器里面的路径 将容器default.conf挂载到自己服务器目录下的default.conf
-v /etc/nginx/default.conf:/etc/nginx/conf.d/default.conf
# :/是指容器里面的路径 将容器html挂载到自己服务器目录下的html 在html我是放项目路径
-v /etc/nginx/html:/usr/share/nginx/html
usr/share/nginx/html是default.conf的默认放在资源路径文件。需要跑项目的需要设置对应挂载和default.conf
编辑nginx配置文件
default.conf是默认文件
server {
listen 80; # 端口
listen [::]:80;
server_name xxx.com; # 域名
location / {
# usr/share/nginx/html 是默认放置资源路径
# /etc/nginx/html 是挂载的路径
# 假设文件放到etc/nginx/html/xxx ,本地需要写/usr/share/nginx/html/xxx
root /usr/share/nginx/html/xxx;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
server
{
listen 8080; # 端口
server_name xxx.xxx.com; # 多域名配置
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080;
}
}
server {
listen 8080 default_server; # 端口
listen [::]:8080 default_server; # 子域名
server_name _;
# usr/share/nginx/html 是默认放置资源路径
# /etc/nginx/html 是挂载的路径
# 假设文件放到etc/nginx/html/xxx ,本地需要写/usr/share/nginx/html/xxx
root /usr/share/nginx/html/xxx;
# Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
server {
listen 443 ssl; # SSL端口
server_name xxx.xxx.com; # SSL 配置
# usr/share/nginx/html 是默认放置资源路径
# /etc/nginx/html 是挂载的路径
# 假设文件放到etc/nginx/html/xxx.pem ,本地需要写/usr/share/nginx/html/xxx.pem
ssl_certificate /etc/nginx/html/xxx.pem;
ssl_certificate_key /etc/nginx/html/xxx.key;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://localhost:8080;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
}
}
server {
listen 443 ssl; # SSL端口
server_name api.xxx.com; # 多SSL 配置
# usr/share/nginx/html 是默认放置资源路径
# /etc/nginx/html 是挂载的路径
# 假设文件放到etc/nginx/html/xxx.pem ,本地需要写/usr/share/nginx/html/xxx.pem
ssl_certificate /etc/nginx/html/xxx.pem;
ssl_certificate_key /etc/nginx/html/xxx.key;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://localhost:10001;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
}
}
重启
# image_id是指你容器id
docker stop image_id
docker start image_id
网友评论