0304nginx配置运行-docker-macos aarm64

文章目录

    • 1 容器运行
    • 3 nginx常见报错
      • 3.1 403 Forbidden
      • 3.2 404 connect() failed (111: Connection refused) while connecting to upstream
    • 结语

1 容器运行

  • 最新版nginx适配,直接拉取镜像

    docker pull nginx
    
  • 运行容器

    docker run \
    --name=nginx-xc \
    -v Users/gaogzhen/devTools/java/projects/full/xuecheng/xc-ui-pc-static-portal:/usr/share/nginx/html \
    -v /Users/gaogzhen/data/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
    -v /Users/gaogzhen/data/docker/nginx/logs:/var/log/nginx \
    -p 80:80 \
    -d nginx
    
    • Users/gaogzhen/devTools/java/projects/full/xuecheng/xc-ui-pc-static-portal为我存放网站目录的路径,该为自己的
    • nginx.conf从随意运行的nginx容器中复制的;
    • 外部挂载目录或者文件需要自己创建
    • 我这里只挂载了网站家目录,nginx配置文件,日志目录;nginx.conf中没加载 *.conf所以没挂载其他文件或者目录;

3 nginx常见报错

3.1 403 Forbidden

第一步:检查挂载目录及文件权限,没啥问题。

第二步:Nginx打开目录浏览功能,即在整个或者某个单独目录开启

# 整个虚拟主机目录开启
location / {
autoindex on;
# ....
}

3.2 404 connect() failed (111: Connection refused) while connecting to upstream

  • 背景简介:docker运行nginx,前台首页登录需要通过后端网关端口63010获取图片验证码(本地部署),为解决跨域问题在nginx设置了代理。

报错如下图3.2-1所示:

0304nginx配置运行-docker-macos aarm64_第1张图片

2023/06/14 07:16:51 [error] 24#24: *4 connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.1, server: www.51xuecheng.cn, request: "POST /api/checkcode/pic HTTP/1.1", upstream: "http://127.0.0.1:63010/checkcode/pic", host: "www.51xuecheng.cn", referrer: "http://www.51xuecheng.cn/sign.html?returnUrl=aHR0cDovL3d3dy41MXh1ZWNoZW5nLmNuL3JlZ2lzdGVyLmh0bWw="
  • 错误原因:nginx配置的proxy_pass 代理服务器地址,docker 中nginx找不到,即nginx所在docker子网访问不到你所配置的目标服务ip地址

  • 解决方案:把代理服务器(主机)地址设置为服务所在主机地址或者公网地址或者本机IP地址

    ifconfig
    
    • ifconfig可查看本地地址
  • nginx.config配置如下所示:

            
    server {   
     # ...省略
      #api
      location /api/ {
              proxy_pass http://gatewayserver/;
      }
    }
    #后台网关
    upstream gatewayserver{
        server 192.168.0.103:63010 weight=10;
    }
    
    • proxy_pass htt://直接服务主机地址(或者备案域名或者本地ip地址或者upstream配置名称)

    • 如果跟upstream配置名称的话,upstream中server里面的主机地址需要为公网ip或者本机ip,不能是localhost或者127.0.0.1,如果是localhost或者127.0.0.1相当于nginx访问nginx运行容器所在的docker子网主机ip地址了,我们的服务当然不存在。

      正常运行如下图3.2-2所示:

      0304nginx配置运行-docker-macos aarm64_第2张图片

    0304nginx配置运行-docker-macos aarm64_第3张图片

    持续更新中……

结语

欢迎小伙伴一起学习交流,需要啥工具或者有啥问题随时联系我。

❓QQ:806797785

[1]mac nginx 403 Forbidden 问题解决[CP/OL]

你可能感兴趣的:(通用技术,docker,macos,nginx)