执行简单代理时未找到Nginx文件

xkrw2x1b  于 2023-01-04  发布在  Nginx
关注(0)|答案(1)|浏览(151)

我正在尝试配置简单的Nginx反向代理,下面是我的nginx.conf文件

http {
  server {
      listen 80 default_server;
      listen [::]:80 default_server;

      location /api {
        proxy_pass http://172.17.0.1:8081/api;
      }
  }
}

这是我的Dockerfile

FROM openresty/openresty:latest
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80/tcp
ENTRYPOINT ["nginx", "-g", "daemon off;"]

现在,我执行docker build . -t my-nginx,然后执行docker run -p 80:80 my-nginx
我调用127.0.0.1:80/api的端点
但是,我得到了404的响应,在nginx日志中我可以看到
172.17.0.1 - :[2023年1月2日:14:39:16 + 0000]“POST /API HTTP/1.1”404 159“-”Apache-HttpClient/4.5.13(Java/17.0.5)”2023年1月2日14:39:16 [错误] 7第7号:*1打开()“/usr/本地/openresty/nginx/html/API”失败(2:无此类文件或目录),客户端:172.17.0.1,服务器:本地主机,请求:“POST /API HTTP/1.1”,主机:“127.0.0.1时间:80”
为什么会这样?这种配置有什么问题?

rekjcdws

rekjcdws1#

原因是默认情况下,openresty docker映像不会在/etc/nginx/nginx.conf下查找nginx配置文件,而是在/usr/local/openresty/nginx/conf/nginx. conf下查找。

# nginx -t
nginx: the configuration file /usr/local/openresty/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/openresty/nginx/conf/nginx.conf test is successful

也就是说,/usr/local/openresty/nginx/conf/nginx.conf文件有一个include指令,用于/etc/nginx/conf.d文件夹下的所有文件,因此您可以将nginx服务器和位置配置放在此文件夹下。
将停靠文件替换为:

FROM openresty/openresty:latest
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80/tcp
ENTRYPOINT ["nginx", "-g", "daemon off;"]

并删除nginx配置中的http键。
请务必阅读openresty image的docker文档,因为您会找到所有必需的信息:露天 Docker

相关问题