htaccess para nginx (imagens de marca d'água sob nginx)

1

Eu recentemente instalei o NGINX como um proxy reverso para o meu servidor apache, para lidar com arquivos estáticos. Até aí tudo bem, tudo está funcionando bem, exceto pelo fato de que eu não posso mais marcar minhas imagens.

Meu .htaccess no Apache para isso foi:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule ^(.*)wp-content/upload/(.*\.(jpg|JPG|jpeg|png))$ $1watermark.php?src=wp-content/upload/$2
</IfModule>

Este é o meu nginx.conf vhosts atual (que não está funcionando para a marca d'água):

server {
  listen      80;
  server_name mydomain.com www.mydomain.com ;
  error_log /var/www/vhosts/mydomain.com/statistics/logs/error_log.nginx warn;

  location / {
    proxy_pass  http://www.mydomain.com:8080$request_uri;
    include  /etc/nginx/proxy.conf;
  }

  location ~* ^.+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js|ico|swf)$ {
    root  /var/www/vhosts/mydomain.com/httpdocs;
    expires 7d;
  }
  #This here, isnt working#
  location /wp-content/upload/ {
  rewrite ^/(.*)wp-content/upload/(.*\.(jpg|JPG|jpeg|png))$ /$1watermark.php?src=wp-content/upload/$2;
  }
 }

Mas não funciona de todo. Eu li reescrever a documentação nginx, eu tenho tentado por vários dias e ainda assim, eu não consigo encontrar o caminho para fazer o trabalho.

    
por PingP0n6 05.06.2011 / 04:39

2 respostas

1

location ~ \.(jpg|jpeg|png|gif|swf|flv|pdf)$ Algo assim parece familiar? É um local bastante padrão para capturar solicitações de arquivos estáticos. O mais provável é que você o tenha também, mas eu obviamente não posso dizer, já que você decidiu mostrar apenas uma linha de sua configuração Nginx.

Agora, como lemos a documentação sobre um dos blocos nginx mais básicos: o local , sabemos que alguns locais têm precedência sobre outros, de fato, sabemos que a lógica do nginx diz que, como você pode tornar a localização da regex realmente específica, ela assumirá que a localização da regex correspondente deve ser usada primeiro.

Sabemos também que a localização / é a menos específica que podemos obter como correspondência de prefixo à esquerda para / corresponde a cada URI possível.

Portanto, se houver outro local correspondente, o local / não será usado. Considerando a solicitação estática da primeira parte da minha resposta e suas informações que você colocou a reescrita no local / provavelmente já sabemos o porquê!

Se ainda assim não funcionar, forneça sua configuração para que as pessoas tenham alguns dados reais para trabalhar.

    
por 05.06.2011 / 13:37
0

Agora, as expressões parecem as mesmas, exceto pelas barras iniciais na reescrita do nginx. Já que você está encarando isso há dias, eu suponho que você já considerou essa parte.

Certifique-se de que o bloco de localização com essa reescrita realmente corresponda às solicitações de imagem (e não seja substituído por outro bloco de localização). Quando tiver certeza de que este é o caso, adicione o sinalizador apropriado à sua linha de reescrita do nginx. Eu acho que break é apropriado neste caso.

    
por 05.06.2011 / 06:07