Настроить nginx для обслуживания статических файлов

Я пытаюсь обслуживать статические файлы (HTML, JS и CSS) из экземпляра вычислительного движка Google под управлением Debian 8. Я использовал git для клонирования веб-приложения в папку / var / www / prod / app с помощью команды

sudo git clone <my repo>

. Я создал файл conf в папке с поддержкой сайтов app.conf . Вот содержимое

server {
    listen 80;
    root /var/www/prod/app;
    location / {
    }
}

Разве этой конфигурации недостаточно, чтобы моя машина обслуживала файлы, когда я ввожу IP-адрес / путь моей машины?

Я вижу страницу добро пожаловать в nginx , когда я набираю свой экземпляр IP-адрес в браузере. Но ни один из файлов в prod / app не обслуживается. Я получаю 404 за все пути, которые я пробую. Может ли кто-нибудь помочь мне настроить это.

0
задан 19 April 2017 в 05:15
2 ответа

Наконец-то все заработало. Я обнаружил, что мои старые заметки о SSL nginx-обратном прокси с Apache нуждаются в этой конфигурации на

# file \apps\httpd\2225\conf.d\nginx-reverse-proxy.conf

# Make sure mod_env is loaded.
# This make sure variable _SERVER[HTTPS] is set if using Nginx as reverse proxy for Apache
# This will help some application to work, since many apps using _SERVER[HTTPS] to work with SSL
# Make sure Nginx has config: proxy_set_header X-Forwarded-Proto $scheme;

SetEnvIf X-Forwarded-Proto https HTTPS=on

Так как я использую серверную часть Nginx, я получил эту конфигурацию для тестирования:

location ~ \.php$ {
    fastcgi_pass unix:/var/run/php5217-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    fastcgi_param HTTPS 'on'; # I tested by adding this line to check
}

И Он работает , теперь мой Moodle хорошо загружается в HTTPS Front-End (css, js, изображения и т. Д.). Теперь мне просто нужна конфигурация Nginx, аналогичная Apache SetEnvIf X-Forwarded-Proto https HTTPS = on ИЛИ убедиться, что все мои серверные части работают по SSL каждый раз

Обновление 170502: Я получил этот пример для этого здесь -

Я разобрался. Nginx имеет файл конфигурации по умолчанию (без расширения ".conf") по следующему пути

 / etc / nginx / sites-enable / default.
 

В конфигурации по умолчанию есть серверный блок для default_server , который обслуживает папку / var / www / html . Это переопределит любую конфигурацию, которую я сделал для обслуживания статических файлов без поля server_name .

Я закомментировал эти строки, и все работает, как ожидалось.

Спасибо Alexy Ten и Tero Kilkaken за указание на меня. в правильном направлении.

1
ответ дан 4 December 2019 в 13:33

Вам нужно добавить try_files внутрь расположения и сделать его сервером по умолчанию:

server {
    listen 80 default_server;

    root /var/www/prod/app;

    location / {
        try_files $uri $uri/ /index.html;
    }
}

Затем вам нужно перезапустить службу nginx.

1
ответ дан 4 December 2019 в 13:33

Теги

Похожие вопросы