Итак, по сути, я запускаю Joomla в контейнере Docker php7-fpm, тогда у меня есть контейнер nginx, где файл joomla.conf определяется следующим образом:
#https://docs.joomla.org/nginx
server {
listen 8081;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
server_name php-docker.local;
root /usr/src/joomla;
index index.php index.html index.htm default.html default.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
# deny running scripts inside writable directories
location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
return 403;
error_page 403 /403_error.html;
}
location ~ \.php$ {
fastcgi_pass joomla:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
#include /etc/nginx/fastcgi.conf;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
И это работает так, как ожидалось... переход к http://: 8081 загружает все правильно.
Теперь 8081 временно отображается в контейнере nginx, что я, по сути, хочу сделать, это настроить обратный прокси-сервер таким образом, что http:///joomla будет конечной конечной точкой.
Для этого я борюсь со следующим файлом conf:
server{
listen 80;
server_name _;
location /joomla/ {
proxy_pass http://localhost:8081/;
proxy_set_header Referer $http_referer;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
}
}
Что происходит, так это то, что HTML подан правильно, однако ни одно из активов не является. Это связано с тем, что URL-адреса в Joomla генерируются классом JURI, который, как полагают, полагается на $request_uri, который по прибытии в Joomla уже потерян.
Таким образом, каждая ссылка или ссылка на файл, script или css отображаются следующим образом:
Вместо:
Однако, когда я обращаюсь ко второму набору URL-адресов, я могу получить доступ к ссылке/ресурсу без проблем... но, конечно, еще раз, изображения, шаблоны, js или ссылки не отображаются правильно.
Я предпочитаю не касаться joomla.conf, если что-то не так, как и для site.conf. Я бы хотел только перевести сегменты URI для сопоставления запросов другим приложениям, например:
/joomla -> localhost:8081
/phpbb -> localhost:8082
/someapp -> localhost:8083