У меня есть базовый сайт html, работающий в домене (скажем, example.com), и я хочу запустить приложение фляги в подкаталоге (например: example.com/test), приложение фляги работает на порту 5433 с использованием разработки фляги по умолчанию сервер.
Для этого я использовал следующую конфигурацию nginx
location /test {
rewrite /test(.*) $1 break;
proxy_pass http://localhost:5433;
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /static/{
alias /home/hrishi/www/example.com/test/app/static/;
}
Я могу получить доступ к приложению, используя URL-адрес example.com/test/, но статические файлы не загружаются (дает ошибку 404), несмотря на псевдоним.
Как я могу это исправить?
Обновить: добавление всего серверного блока в соответствии с инструкциями
server {
listen *:80 default_server; ## listen for ipv4; this line is default and implied
#listen [::]:80; # listen for ipv6
root /home/hrishi/www/example.com/;
index index.php index.html index.htm;
# Make site accessible from http://localhost/
server_name example.com;
# Logging
access_log /home/hrishi/log/example.com/access.log;
error_log /home/hrishi/log/example.com/error.log notice;
location / {
#try_files $uri $uri/ /index.html;
try_files $uri $uri/ /index.php;
}
location /doc {
autoindex on;
}
location /test {
rewrite /test(.*) $1 break;
proxy_pass http://localhost:5433;
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /static/{
alias /home/hrishi/www/example.com/test/app/static/;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /home/hrishi/www/example.com/error/;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# try_files $uri =404;
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# fastcgi_pass unix:/var/run/php5-fpm.sock;
# fastcgi_index index.php;
# include fastcgi_params;
#}
# serve static files directly
location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$ {
expires max;
}
}
Это связано с этим:
location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$ {
expires max;
}
Поскольку местоположения регулярных выражений имеют приоритет над местоположениями с префиксом. Я постыдно буду продвигать свой пост, который вы должны прочитать: Nginx rewite rules 403 ошибка.
Вам нужно будет либо превратить ваш прежний блок местоположения с префиксом в блок местоположения регулярного выражения, либо использовать блок местоположения регулярного выражения для расширений файлов с группой захвата и использовать последний в директиве псевдонима.