Обратный прокси Nginx с отдельными псевдонимами
Интересный вопрос, у меня есть этот код Python:
import sys, bottle, gevent
from bottle import *
from gevent import *
from gevent.wsgi import WSGIServer
@route("/")
def index():
yield "/"
application=bottle.default_app()
WSGIServer(('', port), application, spawn=None).serve_forever()
который работает автономно с nignx перед ним как обратный прокси.
Теперь каждый из этих фрагментов кода выполняется отдельно, но я запускаю несколько из них для каждого домена на проект (каталог), но код почему-то думает, что это верхний уровень, и это не так, когда вы переходите на mydomain.com/something, он работает, но если вы перейдете на mydomain.com/something/, вы получите ошибку. Нет, я проверил и выяснил, что nginx удаляет "что-то" из запроса / запроса, поэтому, когда вы переходите на mydomain.com/something/, код думает, что вы переходите на mydomain.com//, как мне получить nginx для прекратить удаление этой информации?
Код сайта Nginx:
upstream mydomain {
server 127.0.0.1:10100 max_fails=5 fail_timeout=10s;
}
upstream subdirectory {
server 127.0.0.1:10199 max_fails=5 fail_timeout=10s;
}
server {
listen 80;
server_name mydomain.com;
access_log /var/log/nginx/access.log;
location /sub {
proxy_pass http://subdirectory/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_max_temp_file_size 0;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
location /subdir {
proxy_pass http://subdirectory/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_max_temp_file_size 0;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
1 ответ
Я понял:]
по-видимому, в proxy_pass вам нужно указать ему подкаталог, так же как и запрос:
location /sub {
proxy_pass http://subdirectory/sub; // here the location ie: /sub needs to be passed to the underlieing
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_max_temp_file_size 0;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}