docker部署nginx访问宿主机服务并使用缓存的操作方法
一、拉取docker
docker pull nginx
二、创建配置文件夹、缓存数据存放文件夹和日志文件夹
举例:
mkdir -p /etc/nginx/nginx.conf mkdir -p /etc/nginx/log mkdir -p /data/nginx/cache
三、在配置文件夹下面新增配置文件
default.conf,host.docker.internal这个是访问宿主机的主机名,固定的。
server {
listen 80;
listen [::]:80;
server_name 域名;
location ^~/file {
proxy_cache video_cache;
proxy_cache_valid 200 304 12h;
proxy_cache_valid any 10m;
proxy_cache_lock on;
proxy_cache_key $host$uri$is_args$args;
add_header Nginx-Cache "$upstream_cache_status";
proxy_pass http://host.docker.internal:8080/file;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
新增nginx.conf,放通用配置
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
# 引入 mime.types 文件,该文件定义了 MIME 类型映射
include /etc/nginx/mime.types;
# 设置默认 MIME 类型为 application/octet-stream
default_type application/octet-stream;
# 设置日志格式 main,记录客户端访问日志
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
log_format cache '***$time_local ' '***$upstream_cache_status ' '***Cache-Control: $upstream_http_cache_control ' '***Expires: $upstream_http_expires ' '***"$request" ($status) ' '***"$http_user_agent" ';
# 指定访问日志的存储位置和使用的日志格式
access_log /var/log/nginx/log/access.log main;
error_log /var/log/nginx/log/error.log warn;
access_log /var/log/nginx/log/cache.log cache;
# 开启 sendfile 功能,提高文件传输性能
sendfile on;
# 如果客户端连接非常快速,则可能启用 tcp_nopush,否则请注释掉此行
# tcp_nopush on;
# 客户端与服务器之间的连接保持时间,超过这个时间将会自动关闭连接
keepalive_timeout 65;
# 如果需要开启 gzip 压缩功能,可以去掉此行的注释
gzip on;
upstream onedrive_download{
server host.docker.internal:8080;
}
proxy_cache_path /etc/nginx/cache levels=1:2 keys_zone=video_cache:10m max_size=10g inactive=1440m use_temp_path=off;
# 引入 /etc/nginx/conf.d/ 目录下的所有 .conf 配置文件
include /etc/nginx/conf.d/*.conf;
}
四、启动服务
docker run -d --name nginx --restart=always --add-host=host.docker.internal:host-gateway \ -v /etc/nginx/nginx.conf/nginx.conf:/etc/nginx/nginx.conf \ -v /etc/nginx/nginx.conf/default.conf:/etc/nginx/conf.d/default.conf \ -v /etc/nginx/log/log/:/var/log/nginx/log/ \ -v /data/nginx/cache:/etc/nginx/cache \ -p 80:80 -t nginx
--add-host=host.docker.internal:host-gateway的作用就是为了能映射宿主机host。其他的都是映射被指文件和缓存文件。
您可能感兴趣的文章
- 12-20Kubernetes中使用临时容器进行故障排查的方法
- 12-20Nginx设置HTTPS的方法步骤
- 12-20二进制方式安装 Kubernetes1.18.3版本实现脚本
- 12-20Nginx工作模式及代理配置的使用细节
- 12-20ZooKeeper分布式协调服务设计核心概念及安装配置
- 12-20Kubernetes部署可视化地图的十个步骤
- 12-20关于docker清理Overlay2占用磁盘空间的问题(亲测有效)
- 12-20Docker compose配置文件写法及命令使用示例
- 12-20openwrt安装docker并启动的操作方法
- 12-20云原生Kubernetes初始化容器Init使用教程


阅读排行
推荐教程
- 12-07一文教你怎么选择Tomcat对应的JDK版本
- 12-07新版Eclipse集成Tomcat时找不到server选项的解决方法
- 12-06IIS7 应用程序池自动回收关闭的解决方案
- 12-05Windows Server 2019安装VMware
- 12-05Windows服务器默认IE浏览器无法下载文件的解决方法
- 12-05Docker安装Jenkins全过程
- 12-19Zabbix SAML SSO 登录绕过漏洞的操作流程
- 12-15Docker-Compose搭建Spark集群的实现方法
- 12-14Docker Desktop无法正常启动解决(failed to start...)
- 12-14k8s 与docker空间使用分析与清理方法





