我有3个泊坞容器。
一个容器有Django,uwsgi和nginx作为webserver。我配置内部暴露80端口。然后在我的localhost中运行8800:80映射。
第二个容器有另一个带有uwsgi和nginx的Django项目,类似配置并在我的localhost中使用8801:80映射运行。
所以现在我可以从具有不同端口的容器访问不同的Django应用程序。
localhost:8800 - > APP1
localhost:8801 - > APP2
现在我用nginx创建了第三个容器,目的是进行反向代理。
所以我的第三个容器只有nginx配置。有这样的事情:
error_log /var/log/nginx/error.log;
events {
worker_connections 1024;
}
http {
sendfile on;
gzip on;
gzip_http_version 1.0;
gzip_proxied any;
gzip_min_length 500;
gzip_disable "MSIE [1-6]\.";
gzip_types text/plain text/xml text/css
text/comma-separated-values
text/javascript
application/x-javascript
application/atom+xml;
upstream app1{
server my_machine_ip:8800;
}
upstream app2{
server my_machine_ip:8801;
}
access_log /var/log/nginx/access.log;
server {
listen 0.0.0.0:80;
location /firstapp/ {
proxy_pass http://app1/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
location /anotherapp/ {
proxy_pass http://app2/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
}
再次,80端口的容器暴露,我运行端口8888:80映射。
然后我遇到了一些问题: 当我键入localhost:8888 / firstapp /时,它显示404未找到。但是URL更改为localhost:8888 / base / auth / login /?next = /它是app1的登录页面URL。当我使用localhost卷曲时,它实际上给我的反馈它正在进行重定向。但浏览器只返回404页面,我无法登录该项目。但是,当我输入localhost:8800时,我可以看到登录页面并完美登录。看起来nginx反向代理需要知道静态文件才能正常运行。所以我的问题是:
nginx反向代理如何处理请求?我的理解是我的当前配置如下所示:
网络客户端< - > nginx反向代理< - > nginx webserver< - > uwsgi< - > Django项目
我对
的测试网络客户端< - > nginx webserver< - > uwsgi< - > Django项目
这条链的链接完全没问题。但是当我在链中添加了nginx反向代理时,我得到了404错误。到目前为止我对这个404错误的理解,我想知道nginx反向代理是否需要知道静态文件的位置以便正常运行。或者我在配置中遗漏了一些东西或理解。
我的目标是在同一台机器上使用make不同的Django项目,具有相同的配置(端口80,以便不同的项目组可以遵循相同的模式),并使用反向代理键入不同的URI来访问不同的项目。
HTTP/1.1 302 Found
Server: nginx/1.13.5
Date: Tue, 17 Oct 2017 14:39:42 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 0
Connection: keep-alive
X-Frame-Options: DENY
Location: /base/auth/login/?next=/
Vary: Cookie