我正在尝试配置简单的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”
为什么会这样?这种配置有什么问题?
1条答案
按热度按时间rekjcdws1#
原因是默认情况下,openresty docker映像不会在/etc/nginx/nginx.conf下查找nginx配置文件,而是在/usr/local/openresty/nginx/conf/nginx. conf下查找。
也就是说,/usr/local/openresty/nginx/conf/nginx.conf文件有一个include指令,用于/etc/nginx/conf.d文件夹下的所有文件,因此您可以将nginx服务器和位置配置放在此文件夹下。
将停靠文件替换为:
并删除nginx配置中的http键。
请务必阅读openresty image的docker文档,因为您会找到所有必需的信息:露天 Docker