我正在使用Docker容器,并希望Nginx提供前端资源或指向正确的后端服务,因此充当反向代理。我该怎么做呢?我是否需要为每个后端服务设置另一个Nginx服务器?
[我也对Nginx在docker中的工作方式感到困惑。据我了解,您可以指定要设置到Nginx公共目录中的卷。如果我提供静态资源,那不是问题。但是,如果我下载了所有php依赖项和必要的依赖项,以在一个单独的容器(称为laravel容器)中运行我的应用程序,然后在Nginx公共目录中引用了这些文件,那么Nginx如何能够运行此代码,并且是所有后端是由Nginx容器还是laravel容器进行计算?
这些可能是愚蠢的问题,但目前我很困惑。
要在Docker容器中配置Nginx,运行容器时必须包含nginx.conf文件。要添加此文件,可以使用-v
参数。这应该看起来像这样。
docker run -d -v $PWD/nginx.conf:/etc/nginx/nginx.conf nginx
在您的Nginx.conf文件中,您可以指定Nginx的行为方式。反向代理的示例可能如下所示:
events {
worker_connections 4096; ## Default: 1024
}
http {
server {
listen 80;
listen [::]:80;
server_name example.com;
location / {
proxy_pass http://172.17.0.1:8080;
}
}
}
这会将请求重定向到example.com/到端口8080上具有docker ip 172.17.0.1的docker容器。
可在此处找到有关配置Nginx文件的完整描述:https://www.nginx.com/resources/wiki/start/topics/examples/full/
此外,docker中心上的Nginx页面还可以帮助您开始提供静态内容:https://hub.docker.com/_/nginx