1.Docker拉取镜像
docker pull nginx
2.启动容器
docker run -d -p 80:80 --name nginx nginx
这里的语法格式为
//eg:
docker run -d --name nginx -p 12121:80 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/conf/conf.d:/etc/nginx/conf.d -v /data/nginx/log:/var/log/nginx -v /data/nginx/html:/usr/share/nginx/html --privileged=true nginx
3.创建挂载目录
mkdir -p /data/nginx/{conf,log,html}
//{}这里是批量创建
4.把Nginx容器中的文件进行复制 =》 ngixn => 宿主机
//nginx.conf复制到主机
docker cp nginx:/etc/nginx/nginx.conf /data/nginx/conf/nginx.conf
//将conf.d文件夹复制到主机
docker cp nginx:/etc/nginx/conf.d /data/nginx/conf/conf.d
//把html目录复制到主机
docker cp nginx:/usr/share/nginx/html /data/nginx/
5.停止刚刚创建的nginx容器
docker stop nginx
6.删除刚刚创建的容器
docker rm nginx
7.重新创建容器,并且挂载文件
docker run -d --name nginx -p 8880:80 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/conf/conf.d:/etc/nginx/conf.d -v /data/nginx/log:/var/log/nginx -v /data/nginx/html:/usr/share/nginx/html --privileged=true nginx
此时创建nginx成功,也实现了文件的挂载
修改文件的目录为/data/nginx/html,修改配置文件的目录为/data/nginx/conf
如果要想直接部署自己的前端项目的话,直接放入dist包,然后解压命名为html即可使用
但是如果想配置uri这种多路径的方法的话,需要修改nginx的配置,进入/data/nginx/config,
vim nginx.config
这里就是nginx的基本配置文件
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
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;
include /etc/nginx/conf.d
这里能看出,引出的配置为/conf.d文件夹内部导入的全部*.conf文件,我们在这里修改自己的文件
cd conf.d
vi default.conf
server {
listen 80
listen [::]:80
server_name localhost
location /warehouse-management {
root /usr/share/nginx/html/
index index.html index.htm
try_files $uri $uri/ /warehouse-management/index.html =404
add_header Cache-Control "no-cache"
}
error_page 500 502 503 504 /50x.html
location = /50x.html {
root /usr/share/nginx/html
}
}
如果要配置uri这里需要配置文件
//在location下面进行配置
//root 为文件根目录
//这里的/warehouse-management 为uri路径,nginx会在root的目录下去找/warehouse-management文件下的内容
//如果使用了spa这种单页面的前端项目,刷新会报错404,这里要添加
// try_files $uri $uri/ /warehouse-management/index.html =404;
// 这个配置的意思为如果找不到文件,让nginx去尝试找/warehouse-management/index.html
// 下的内容,这样可以避免出错
location /warehouse-management {
root /usr/share/nginx/html/;
index index.html index.htm;
try_files $uri $uri/ /warehouse-management/index.html =404;
add_header Cache-Control "no-cache";
}
nginx root和alias的区别
//niginx配置文件目录有两种写法 alias & root
location /i/{
alias /usr/local/nginx/html/admin/;
}
//若按照上述配置的话,则访问/i/目录里面的文件时,ningx会自动去/usr/local/nginx/html/admin目录找文件。
location /i/ {
root /usr/local/nginx/html/admin;
}
//若按照这种配置的话,则访问/i/目录下的文件时,nginx会去/usr/local/nginx/html/admin/i下找文件。
//root不会将location配置的路径去掉 也就是请求http://localhost/res/xxx,不会忽略localhost的配置,反而会加在root配置的路径后面,变成f:/res/res/xxx
//alias会将location配置的路径去掉
//也就是请求http://localhost/res/xxx,会忽略localhost的配置,不会加在alias配置的路径后面,变成f:/res/xxx,location的/res/被忽略了
//切记使用alias的时候要以/结束
如果需要配置代理的话
location /front {
proxy_pass xxxx
}