2015-05-28 2 views
1

Я использую этот tutorial - part 1, но я не уверен, как проверить, работает ли приложение с помощью nginx, обслуживающего статические файлы или нет.Подтвердите, использует ли приложение nginx для статических файлов

У меня точно такой же код.


/etc/nginx/sites-available/flask_project 

server { 
    location/{ 
     proxy_pass http://localhost:8000; 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
    } 
    location /static { 
     alias /home/www/flask_project/static/; 
    } 
} 

И потом:

gunicorn app:app -b localhost:8000 

Все маршруты работают отлично. Однако, если я http://localhost:8000/static я буду видеть

Not Found 

The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. 

И, видимо, я должен увидеть страницу с <h1>Test!</h1> из статической папки.

Что я делаю неправильно?

В основном я хочу знать, как настроить nginx для обслуживания статических файлов, а затем подтвердить.

-app.py 
-static 
    -index.html 
+0

Ваши запросы на «localhost: 8000» идут непосредственно на пушечный огонь, полностью обходя nginx. Вы должны запросить 'localhost/...' или другое имя, которое вы используете для сервера. –

+0

@AlexeyTen так, я правильно обслуживаю статические файлы или нет? Вот в чем вопрос. – anvd

ответ

1

Первое, просит порт 8000 полностью байпас Nginx, поэтому ничего странного здесь. Вы должны перейти на localhost без номера порта.

Во-вторых, вы должны символически привязать этот конфиг к /etc/nginx/sites-enabled и перезагрузить nginx.

В-третьих, ваше статическое местоположение неверно. У вас есть location без косой черты и alias с одним. Они всегда должны быть с косой чертой или без нее. И в этом случае еще лучше иметь директиву root.

server { 
    root /home/www/flask_project; 
    index index.html; 

    location/{ 
     proxy_pass http://localhost:8000/; 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
    } 

    location /static/ { 
     # empty. Will serve static files from ROOT/static. 
    } 
} 
+0

если я запустил пулемётчик в порту 8000, почему я должен идти на локальный хост без порта? В основном вы говорите, что учебник ошибочен после тысяч просмотров? Во всяком случае, я получаю такой же результат с вашим ответом. – anvd

+0

Это из учебника 'Откройте ваш браузер и перейдите по адресу http: // your_domain_name_or_ip_address.' Нет порта, видите ли. И, да, этот учебник написан кем-то, кто едва знал nginx. –

+0

Извините, но я не понимаю. localhost будет использовать порт 80 по умолчанию. Я прямо говорю о том, чтобы использовать 8000 в пулемете. Если я пойду на localhost, я получу эту веб-страницу. – anvd

0

Вы должны сделать запрос непосредственно http://localhost:8000/static/index.html то вы увидите ответ.

Но если вы хотите увидеть на index.html по умолчанию, вы должны иметь что-то вроде в конфе:

location /static { 
    alias /home/www/flask_project/static/; 
    try_files $uri $uri/index.html index.html; 
} 
+0

В этом случае я увижу ответ даже с остановленным nginx. Проблема в том, как проверить, работает ли nginx или нет. – anvd

+0

Нет, вы не увидите ответ, если nginx был остановлен. – meverone

Смежные вопросы