随笔 - 18  文章 - 4 评论 - 2 阅读 - 21230
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

docker安装nginx

镜像地址: https://hub.docker.com/_/nginx

配置文件挂载

# 复制基础配置文件.单个文件挂载注意事项如下:
# 单独挂载文件,通过vim并不会改变inode,挂载目录,或者赋予权限(chmod 777)
mkdir -p  $DOCKER_PATH/nginx/conf \
    && docker run  --rm  nginx:1.21.4 cat /etc/nginx/nginx.conf > $DOCKER_PATH/nginx/conf/nginx.conf \
    && chmod 777 $DOCKER_PATH/nginx/conf/nginx.conf

nginx启动

复制代码
# 我采用docker-compose.yml方式启动的,其它类似,暴露端口,磁盘挂载.
version: "3.7" services: nginx: image: nginx:1.21.4 container_name: nginx volumes: - "$DOCKER_PATH/nginx/conf/nginx.conf:/etc/nginx/nginx.conf" - "$DOCKER_PATH/nginx/conf/conf.d/:/etc/nginx/conf.d/" ports: - 80:80
复制代码

nginx重启

# 和本地一致,更改配置文件后检查重启,因为docker安装所以需要使用docker exec [容器名称] [具体指令]
docker exec nginx nginx -t
docker exec nginx nginx -s reload    

常用配置

1. 发起请求的服务器配置域名映射.(或直接为公网域名.)
linux vim /etc/hosts
win notepad C:\Windows\System32\drivers\etc\hosts
2. 添加新的配置文件.
vim $DOCKER_PATH/nginx/conf/conf.d/easy.conf
复制代码
server
{
    listen 80;
    server_name easy.com;
    charset utf-8;
    location /httpbin {
        proxy_pass http://httpbin.org/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
# 其它热备,轮询,加权轮询,绑定ip等参考.https://www.runoob.com/w3cnote/nginx-proxy-balancing.html
复制代码

测试: curl http://easy.com/httpbin/get

遇到的问题

1. proxy_pass配置问题:

nginx日志报错: connect() failed (111: Connection refused) while connecting to upstream

因为采用docker安装.nginx服务节点和宿主机不是同一个.
配置为localhost或者127.0.0.1导致服务无法转发
配置为easy.local(宿主机内网域名)能正常生效.

2. proxy_pass配置问题:

 能转发,样式丢失或跳转页面错误.

配置了路径服务跳转转发过程中grafana丢失.http://easy.com/grafana --> http://easy.com/login
复制代码
转发对应服务grafana/mongoExpress/metabase等.
部分服务访问存在 subPath/contextPath问题.
错误示例:

location /grafana {
    proxy_pass http://easy.local:3000;
}
正确示例:
location /{
proxy_pass http://easy.local:3000;
}
或启用服务的subPath
示例:grafana配置subPath.
https://blog.csdn.net/weixin_34306676/article/details/91493964
复制代码


posted on   夜色无边000  阅读(269)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示