Szukałem odpowiedzi w okolicy i uważam, że odpowiedź jest dość prosta, ale nie mogłem jej znaleźć. Myślę, że z powodu mojego braku wiedzy na temat nginx ...nginx/butelka python - prośba o połączenie do innego portu
Mam moją instancję nginx działającą na localhost: 8080 i mój serwer butelkowy nasłuchujący na localhost: 8081. Jeśli otworzę adresy z przeglądarki, działają dobrze, ale kiedy próbuję uzyskać dostęp z aplikacji uruchomionej na localhost: 8080, nie mogę odzyskać zasobów generowanych przez serwer Bottle.
Muszę przekierować wszystkie połączenia do/data/path do tej samej domeny (localhost), ale do innego portu (8081), tego, który nasłuchuje mój serwer butelek.
Oto kod: Nginx: serwer
server {
listen 8080;
server_name localhost;
root /Users/Diego/Desktop;
location/{
index index.html index.htm;
}
location /data/ {
proxy_pass http://127.0.0.1:8081;
}
}
Butelka:
@route('/')
def printtest():
print 'success'
return 'loaded page'
@route('/<scenename>/data/<filename:path>')
def testMethod(scenename,filename):
print scenename, filename
run(host='localhost', port=8081, debug=True)
Wywołanie w przeglądarce localhost: 8080, wyświetla mi strony serwowane przez nginx, ale wtedy, jeśli Wywołuję link do pobrania czegoś przechowywanego w /data/directory/filename.json, butelka wydaje się nie odbierać żądania. Dziennik błędów stwierdza:
2013/04/16 18:50:52 [error] 3544#10612: *69 CreateFile() "C:/Users/Diego/Desktop/project1/data/directory/directory-varietal.json" failed (3: The system cannot find the path specified), client: 127.0.0.1, server: localhost, request: "GET /project1/data/directory/directory-varietal.json HTTP/1.1", host: "localhost:8081", referrer: "http://localhost:8080/project1/"
Czy ktoś może mi powiedzieć, jak radzić sobie z tego rodzaju przekierowaniem/routingiem?
Plus, czy istnieje sposób na wydrukowanie kanału w dzienniku z nginx? jak polecenie print_entry lub podobne?
Dzięki!
EDIT: Próbowałem tego, ale bez rezultatu ... https://serverfault.com/questions/208656/routing-to-various-node-js-servers-on-same-machine
EDIT: Ok pewna poprawa, stwierdziliśmy, że prawdopodobnie jest to kwestia lokalizacji zapytań. Z tym blokiem i żądaniem pliku .json faktycznie wysyła zapytania do serwera butelek.
location ~* \.(json)$ {
proxy_pass http://localhost:8081;
}
EDYCJA: Yeee! Znalazłem rozwiązanie ... okazało się, że był to problem ze ścieżką zdefiniowaną w lokalizacji. Uwaga do siebie: Przeczytaj uważnie instrukcję: http://wiki.nginx.org/HttpCoreModule#location
nowy kod dla serwera:
server {
listen 8080;
server_name localhost;
root /Users/Diego/Desktop;
location/{
index index.html index.htm;
}
location ~* /data/ {
proxy_pass http://localhost:8081;
}
}
W każdym razie jeśli ktoś ma lepsze rozwiązanie lub jakakolwiek sugestia jest więcej to zapraszamy do tego przyczynić.
Cieszę się, że go rozwiązałeś - i dziękuję, że wróciłeś, by opublikować rozwiązanie! –
@Dieghito, proszę zamieścić aktualizację jako właściwą odpowiedź. Dopuszczalne jest udzielenie odpowiedzi na własne pytanie. – Rod
Dzięki @Rod, gotowe. – Dieghito