Я пытаюсь настроить сервер Nginx в основном с 3 различными типами контента:Как обслуживать статические файлы в подпапке форума на nginx?
- Основной сайт, работающий на CodeIgniter
- AQ & форум, в папке
/qa
(работает на Question2Answer) - статические файлы (в разных местах, в том числе
/qa
)
Я бегу в различные неприятности. Мой текущий конфиг (внутри блока сервера) является:
# Q2A
if ($request_uri ~* "^/qa/") {
rewrite ^/qa/(.*)$ /qa/index.php?qa-rewrite=$1 last;
}
# CI
if (!-e $request_filename) {
rewrite ^(.+)$ /index.php?$1 last;
}
location/{
index index.php index.html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_cache one;
fastcgi_cache_key $scheme$host$request_uri;
fastcgi_cache_valid 200 302 304 5m;
fastcgi_cache_valid 301 1h;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /srv/www/site$fastcgi_script_name;
fastcgi_param HTTPS off;
}
Это в основном работают по этим вопросам, за исключением:
- Запросы на PHP файлов в моей папке приложения будут разбираемый/казнены. Очевидно, так как это не проходит через приложение CI, оно вызывает ошибки (переменные не найдены и т. Д.).
- Все статические файлы внутри папки
qa
в настоящее время пассы в приложение Q2a вместо того, чтобы быть служил в качестве статических файлов
я пробовал так много разных вещей, я потерял счет, например, с использованием блока определения местоположения как location ~* ^/qa/ {}
и различные перестановки try_files
, но не повезло. Я также пробовал модифицировать this Wordpress example on the nginx site. Большинство из них только что закончилось /qa/
, возвращая 404. Некоторые методы привели к тому, что сервер обслуживал необработанный PHP-код!
Может ли кто-нибудь помочь с надлежащим способом установить это?
Спасибо, но почему-то страницы в каталоге/qa не работают, кроме самой директории 'mysite.com/qa /'. Кроме того, я попытался изменить это на 'location ~ * ^/qa /(.*)?$', чтобы убедиться, что это весь URL-адрес, и он вызывает загрузку PHP-кода! – DisgruntledGoat
Хм, у меня может быть что-то не так. Вот исходное правило Apache: 'RewriteRule ^. * $ Index.php? Qa-rewrite = $ 0 &% {QUERY_STRING} [L]' – DisgruntledGoat
Как я уже сказал, если я использую 'location ~', это ** загрузка ** фактический PHP-код, то есть загрузку файла '/ qa/index.php'. Почему это так? – DisgruntledGoat