Nginx访问服务器静态资源
Contents
最近想使用闲置服务器作为一个仓库来访问其中的静态资源,同时学习服务器相关知识,方便之后配置docker和nginx遂有此记录
什么是docker
Docker是一种基于Go语言实现的开源容器项目,目标是达到项目运行环境“一次封装,到处运行”的目的。
什么是nginx
Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其占有内存少,并发能力强,在BSD-like 协议下发行。
linux安装docker
我的服务器是 ubuntu-18.04-amd64
1 .检查卸载老版本docker
sudo apt-get remove docker docker-engine http://docker.io containerd runc
2 .更新ubuntu的apt源索引
sudo apt-get update
3 .允许apt通过HTTPS使用仓库安装依赖
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
4 .添加GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
5 .加入官方仓库
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
6 .安装docker
sudo apt-get install docker-ce docker-ce-cli containerd.io
7 查看是否安装成功
sudo docker run hello-world
8 .docker卸载
sudo apt-get purge docker-ce docker-ce-cli containerd.io
docker安装及配置nginx
因为需要访问服务器的静态资源,所以最好将nginx容器内的配置文件等一些相关目录和宿主机相关联,将宿主机的目录映射到nginx容器里
1 .安装nginx镜像
docker pull nginx
2 .启动nginx
docker run --name nginx -p 80:80 -d nginx
3 .创建宿主机nginx配置文件地址
mkdir -p home/nginx/conf.d/
& mkdir -p home/nginx/conf/
& mkdir -p home/nginx/html/
& mkdir -p home/nginx/logs/
& mkdir -p mnt/data/
- -p 参数来创建多级文件夹
4 .查看nginx容器id
docker ps -a
4 .将nginx容器中的相关配置文件拷贝到宿主机
docker cp 容器id:/etc/nginx/nginx.conf /home/nginx/conf/
docker cp 容器id:/etc/nginx/conf.d/default.conf /home/nginx/conf.d/
docker cp 容器id:/usr/share/nginx/html /home/nginx/html/
docker cp 容器id:/var/log/nginx /home/nginx/logs/
5 .停止容器运行并删除容器
docker stop 容器id
docker rm 容器id
6 .重新创建启动nginx容器并将容器配置文件挂载到宿主机
docker run --name nginx3344 -d -p 3344:80
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v /mnt/data:/mnt/data
-v /home/nginx/logs:/var/log/nginx
-v /home/nginx/html:/usr/share/nginx/html
-v /home/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
nginx
- –name nginx3344:为新创建的Docker容器指定一个名字,这个名字是“nginx3344
- -d:在后台运行容器。
- -p 3344:80:将宿主机的3344端口映射到容器的80端口。这样,访问宿主机的3344端口就会自动转到容器的80端口。
- -v 将宿主机的路径挂载到容器的同一路径。
- nginx:这是要运行的Docker镜像的名称,它表示要运行的容器是用这个镜像创建的。
静态资源访问配置
server {
listen 80;
# listen [::]:80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
add_header Access-Control-Allow-Origin *;
alias /mnt/data/;
autoindex on;
}
# location ~ .*\.(js|css|htm|html|gif|jpg|jpeg|png|bmp|ico|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {
# root /mnt/data;
# }
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# root /usr/share/nginx/html;
# }
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
# location ~ \.php$ {
# proxy_pass http://127.0.0.1;
# }
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
# location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
# }
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
# location ~ /\.ht {
# deny all;
# }
}
location / {
add_header Access-Control-Allow-Origin *;
alias /mnt/data/;
autoindex on;
}
- add_header Access-Control-Allow-Origin * 它用于在HTTP响应头中添加一个名为Access-Control-Allow-Origin的头部。星号(*)表示这个头部将允许任何来源的网页进行访问,这是CORS(跨源资源共享)策略的一部分,用于处理跨域请求。
- alias 用于将服务器上的某个路径映射到另一个路径。在这里,它将服务器上的/mnt/data路径映射为网站的根目录
- autoindex 它用于启用目录列表。如果请求的URL是一个目录且没有特定的处理指令,Nginx会自动返回该目录下的文件列表。
至此结束