Gostaria de executar vários domínios do mesmo servidor. Eu gostaria que o nginx ficasse na frente do apache e servisse arquivos estáticos. Por isso, pedidos de one.com/site_media/logo.png apontam para /var/www/one/site_media/logo.png e two.com/site_media/logo.png apontam para /var/www/two/site_media/logo.png . Onde estou indo errado na seguinte configuração?
ports.conf
NameVirtualHost *:80
Listen 8080
nginx / sites disponíveis / one.com
server {
listen 80;
server_name one.com;
access_log /var/www/one/nginx_access.log;
error_log /var/www/one/nginx_error.log;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Magic-Header "secret";
client_max_body_size 10m;
}
location ^~ /site_media/ {
root /var/www/one;
if ($query_string) {
expires max;
}
}
nginx / sites disponíveis / two.com
server {
listen 80;
server_name two.com;
access_log /var/www/two/nginx_access.log;
error_log /var/www/two/nginx_error.log;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Magic-Header "secret";
client_max_body_size 10m;
}
location ^~ /site_media/ {
root /var/www/two;
if ($query_string) {
expires max;
}
}
apache2 / sites disponíveis / one.com
<VirtualHost *:8080>
ServerName one.com
ServerAlias www.one.com
WSGIScriptAlias / /var/www/one/one.wsgi
ErrorLog /var/www/one/apache_error.log
LogLevel warn
CustomLog /var/www/one/apache_access.log combined
</VirtualHost>
apache2 / sites disponíveis / two.com
<VirtualHost *:8080>
ServerName two.com
ServerAlias www.two.com
WSGIScriptAlias / /var/www/two/two.wsgi
ErrorLog /var/www/one/apache_error.log
LogLevel warn
CustomLog /var/www/one/apache_access.log combined
</VirtualHost>
Um pedido em two.com para "/site_media/logo.png" falha porque o servidor procura em / var / www / one / site_media. Gostaria de manter os hrefs "/ site_media" para os dois sites. Existe uma maneira melhor de reescrever o local do nginx ^ ~ / site_media /? Ou algo mais?
(Editar) Minha solução alternativa é:
location ^~ /site_media/ {
if ($host = 'one.com') {
root /var/www/one;
}
if ($host = 'two.com') {
root /var/www/two;
}
if ($query_string) {
expires max;
}
Isso parece realmente "hacky" e não elegante.