1,
mkdir wwwroot
mkdir conf
mkdir logs
wwwroot: 目录将映射为 nginx 容器配置的虚拟目录。
logs: 目录将映射为 nginx 容器的日志目录。
conf: 目录里的配置文件将映射为 nginx 容器的配置文件。
2,在conf文件夹中创建nginx.conf文件
cd conf
vi.nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
#博客服务器,多个可以实现负载均衡
upstream lyx-blog{
server 192.168.xx.xx:2020 weight=1;
}
include /etc/nginx/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 main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
#用户相关的请求,转到lyx-blog
location ^~/user/ {
proxy_pass http://lyx-blog;
#以下是一些反向代理的配置可删除
proxy_redirect off;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header Host $host;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;
proxy_set_header X-Forwarded-Server $host;
}
location ^~/admin/ {
proxy_pass http://lyx-blog;
#以下是一些反向代理的配置可删除
proxy_redirect off;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header Host $host;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;
proxy_set_header X-Forwarded-Server $host;
}
location ^~/portal/ {
proxy_pass http://lyx-blog;
#以下是一些反向代理的配置可删除
proxy_redirect off;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header Host $host;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;
proxy_set_header X-Forwarded-Server $host;
}
#其他访问访问根目录wwwroot
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
}
3,运行nginx
方式1:
cd ..
退出到nginx目录下,执行:
docker run -d --name=lyx_nginx -p 80:80 \
-v /root/docker/nginx/wwwroot:/usr/share/nginx/html \
-v /root/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/docker/nginx/logs:/var/log/nginx \
nginx
命令说明:
-p xx:80: 将容器的 80 端口映射到主机的 xx 端口.
\ 换行
--name lyx-nginx:将容器命名为 lyx-nginx
-v /root/docker/nginx/wwwroot:/usr/share/nginx/html:将创建的 wwwroot 目录挂载到容器的 /usr/share/nginx/html。
-v /root/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:将创建的 nginx.conf 挂载到容器的 /etc/nginx/nginx.conf。
-v /root/docker/nginx/logs:/var/log/nginx:将创建的 logs 挂载到容器的 /var/log/nginx。
拉取最新的nginx
注意:如果出现如下问题(没有出现就忽略即可):
/usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:235: starting container process caused "container init exited prematurely".
原因:docker 版本与 Linux 内核版本不兼容导致。
解决办法:https://blog.csdn.net/liqun_super/article/details/88304094
方式2:
a,可以先建立一个docker-compose.yml文件
version: '3.1'
services:
nginx:
restart: always
image: nginx:1.19.2-alpine
container_name: my-nginx
ports:
- 80:80
- 443:443
volumes:
- "./conf/nginx.conf:/etc/nginx/nginx.conf"
- "./wwwroot:/usr/share/nginx/wwwroot"
- "./log:/var/log/nginx"
b,执行
docker-compose up -d
这样也能执行。但是都是需要配置编写nginx.conf文件。
4,测试
cd wwwroot
vi index.html
访问:192.168.xx.xx
5,可以把 vue 开发的项目丢到nginx的wwwroot目录里面
vue,先打包项目
在项目下会发现多了一个目录 dist
接来下,复制dist目录里面的内容到 nginx的wwwroot目录里即可。
测试 访问:192.168.xx.xx