参考:nginx一小时入门教程 · 语雀
docker安装nginx
docker pull nginx
docker run --name mynginx -p 80:80 -d nginx
# 用于装静态文件目录
mkdir -p /home/nginx/static
# 将nginx中的文件拷贝出来
docker container cp mynginx:/etc/nginx/nginx.conf /home/nginx/
docker container cp mynginx:/etc/nginx/conf.d /home/nginx/
docker container cp mynginx:/var/log/nginx/ /home/nginx/logs
docker stop mynginx
docker rm mynginx
docker run -p 80:80 -p 8000:8000 -p 8001:8001 -p 8002:8002 -p 8003:8003 -p 8004:8004 -p 8005:8005 -p 8006:8006 --name mynginx -v /home/nginx/static:/home/static -v /home/nginx/logs:/var/log/nginx -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf.d:/etc/nginx/conf.d -d nginx
可以得到一上目录,logs中有access.log和error.log,方便我们查看nginx日志
static放置我们的静态文件或者前端项目。
特别注意:因为我们是docker数据卷挂载nginx内部文件夹,所以在编写nginx.conf或者conf.d下.conf配置时,指向的应该对应容器卷的位置。
其次, 云服务器需要开放对应端口80、8000-5,方便下面配置调试。
访问静态资源
在conf.d下加入8000.conf文件
vim /home/nginx/conf.d/8000.conf
server{
listen 8000;
server_name localhost;
location / {
root /home/static/AdminLTE-3.2.0;
index index.html index2.html index3.html;
}
}
listen
监听可以配置成IP
或端口
或IP+端口
listen 127.0.0.1:8000;
listen 127.0.0.1;( 端口不写,默认80 )
listen 8000;
listen *:8000;
listen localhost:8000;
server_name
server_name主要用于区分,可以随便起。
也可以使用变量 $hostname
配置成主机名。
或者配置成域名: example.org
www.example.org
*.example.org
如果多个server的端口重复,那么根据域名
或者主机名
去匹配 server_name 进行选择。
下面的例子中:
curl http://localhost:80
会访问/usr/share/nginx/html
curl http://nginx-dev:80
会访问/home/nginx/static/AdminLTE-3.2.0
# curl http://localhost:80 会访问这个
server {
listen 80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
# curl http://nginx-dev:80 会访问这个
server{
listen 80;
server_name nginx-dev;#主机名
location / {
root /home/nginx/static/AdminLTE-3.2.0;
index index.html index2.html index3.html;
}
}
location
/
请求指向 root 目录
location 总是从/
目录开始匹配,如果有子目录,例如/css
,他会指向/static/css
location /css {
root /static;
}