Se o apache estiver escutando na porta 9095
do domínio sub1.example.com
e na porta 9096
do domínio sub2.example.com
, e você quiser que o nginx passe http://www.example.com/alias1
para primeiro e http://www.example.com/alias2
para o segundo virtualhost apache, você faria:
location /alias1/ {
proxy_redirect off;
proxy_http_version 1.1;
proxy_pass http://127.0.0.1:9095/;
proxy_set_header Host sub1.example.com;
}
location /alias2/ {
proxy_redirect off;
proxy_http_version 1.1;
proxy_pass http://127.0.0.1:9096/;
proxy_set_header Host sub2.example.com;
}
então, por exemplo, a solicitação original para nginx em http://your-single-domain.example.com/alias1/foo/page1.html
seria encaminhada para o apache como se fosse para http://sub1.example.com:9095/foo/page1.html
E a solicitação original para nginx em http://your-single-domain.example.com/alias2/bar/baz/page2.html
seria encaminhada para o apache como se fosse para http://sub2.example.com:9096/bar/baz/page2.html
Update1 (prova de conceito):
com o nginx tendo o arquivo de configuração somente como acima, nós rodamos o netcat como nc -l -p 9095
(o apache não deveria estar escutando naquela porta para esta depuração), e então abrimos no navegador http://www.single-domain.com/alias1/assets/style.css
. Devemos ver na saída do netcat o seguinte:
GET /assets/style.css HTTP/1.1
Host: sub1.example.com
Connection: close
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0 Iceweasel/38.6.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Se houvesse o apache ouvindo na porta 9095 em vez do nosso netcat, ele receberia a solicitação HTTP / 1.1 para o link " URL" " "(que seria mostrado em /var/log/apache2/access_log
ou similar)
Observe que rewrite ^/alias1(/.*)$ $1 break;
não é necessário, pois location /alias1/
removerá automaticamente essa /alias1/
parte da URL.
Se você obter resultados diferentes ao usar o seu arquivo de configuração nginx, isso significa que você tem diretivas conflitantes no nginx - nesse caso, recomendo começar apenas com a configuração desta resposta, verificando se ela funciona e então comece a adicionar blocos de configuração antigos um por um até que ele quebre - e então você terá um bloco conflitante que precisa mudar.
Update2 : desde que você postou sua configuração do nginx, é óbvio - você tem uma substituição de local que diz que todos os seus arquivos .css
(junto com outros arquivos) devem ser servidos diretamente com o nginx de /var/www/single-domain.com/public
. Remova ou edite-o e ele passará pelo apache.