【发布时间】:2014-07-22 18:42:45
【问题描述】:
我有一个在服务器 A 上运行的应用程序。我有一个服务器 B,我想用作反向代理来访问服务器 A 上的应用程序。服务器 A 正在运行 nginx 1.4.5 和 Django(Python 2.7.6 与fastcgi),服务器 B 也在运行 nginx 1.4.5。我也想以这种方式添加 SSL。
代理有点工作。问题是请求看不到正确传递。转到https://servera.org/ 时,我只收到 404 错误,而不是我期待的登录页面。
这是我在浏览器中看到的错误消息(这是一条错误消息,所以我知道请求正在到达服务器 A):
Page not found (404)
Request Method: GET
Request URL: http://nova.iguw.tuwien.ac.at/index.html
Using the URLconf defined in TUBadges.urls, Django tried these URL patterns, in this order:
1. ^admin/doc/
2. ^admin/
3. ^$
4. ^badges/?$
5. ^badges/(?P<uid>\d+)/?$
6. ^presets/$
7. ^svg$
8. ^bgsvg$
9.
这是我的反向代理配置:
upstream server_a {
server servera.org:8080 fail_timeout=0;
}
server {
listen 443 ssl;
listen 80;
server_name subdomain1.serverb.org;
server_name subdomain2.serverb.org;
keepalive_timeout 70;
ssl_certificate /etc/certificates/server_b.pem;
ssl_certificate_key /etc/certificates/server_b.key;
error_log /var/log/nginx/aurora.ssl.error.log error;
access_log off;
client_max_body_size 50M;
location ~ ^/(.+)$ {
proxy_intercept_errors off;
proxy_buffering off;
proxy_connect_timeout 5;
proxy_send_timeout 5;
proxy_read_timeout 5;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-By $server_addr:$server_port;
proxy_set_header X-Forwarded-Fo $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
error_log /var/log/nginx/tubadges.error.log debug;
proxy_pass http://server_a;
proxy_redirect off;
}
}
这就是我在服务器 A 上用来运行应用程序的配置:
server {
listen 8080; ## listen for ipv4
server_name localhost;
server_name servera.org;
client_max_body_size 5M;
error_log /var/log/nginx/app1.error.log;
access_log /var/log/nginx/app1.access.log;
location /static {
root /srv/django/projects/app1;
}
location /media {
root /srv/django/projects/app1;
}
location / {
# host and port to fastcgi server
fastcgi_pass unix:/srv/django/run/app1.socket;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_pass_header Authorization;
fastcgi_intercept_errors off;
}
}
我假设它与我的 Django App 配置或服务器 A 上的配置有关。
你能发现错误吗?您需要更多信息吗?
这里有没有我刚刚错过的答案?
提前致谢!
PS:这是我第一次在 StackOverflow 上提问,所以如果有什么方法可以改进我的问题以获得更好的答案,并且您发现了一些真正的错误,请随时向我指出我怎样才能改善这个问题。 :)
【问题讨论】:
标签: python ajax django nginx proxy