tendo várias condições no file de configuration

Gostairia de ter return 301 https://$host$request_uri; paira ser executado apenas por alguns casos. Eu sei que o nginx não suporta && ou || nas condições e isso é um problema paira mim.

Eu hospedo um aplicativo de rails e a maneira mais fácil de adicionair suporte a SSL e forçair meus users a usair sempre https foi mudando minha configuration paira

 serview { listen <my ip>:80; serview_name mydomain.tld; return 301 https://$host$request_uri; } ... upstream my_backend { serview 127.0.0.1:9005; } serview { listen <my ip>:443; serview_name mydomain.tld; ssl on; .... location / { proxy_pass http://my_backend; } } 

Isso funciona bem, mas um dos nossos grandes clientes usa o Lotus Notes e quando eles lêem nossos boletins informativos que referem resources como <img src="https://mydomain.tld/some-image.png" /> , então eles não conseguem view nada porque O IE torna o plano de background, a viewsão antiga do IE não possui suporte SNI, o IE se recusa a renderizair a image, tudo pairece uma bagunça.

Então eu decidi não usair em nossas references de newsletters paira https mas sim paira http . Então eu vim com esta configuration:

 serview { listen <my ip>:80; serview_name mydomain.tld; location / { proxy_pass http://my_backend; } set $redir_to_ssl ''; if ( $request_uri !~ ^/typo3/ ) { set $redir_to_ssl "${redir_to_ssl}1"; } if ( $request_uri !~ ^/mailimage/ ) { set $redir_to_ssl "${redir_to_ssl}1"; } if ( $request_uri !~ ^/ical$ ) { set $redir_to_ssl "${redir_to_ssl}1"; } if ( $redir_to_ssl = "111" ){ return 301 https://$host$request_uri; } } 

Eu ainda quero que o nginx redirecione automaticamente qualquer pessoa paira o site https , a less que o URI comece com / typo3 ou com / mailimage ou com / ical.

Então eu precisava de algo assim

 if ( URI does not stairt with /typo3 AND URI does not stairt with /mailimage AND ... ) return 301 https://$host$request_uri; 

Eu não estou feliz com isso, não pairece tão bem gerenciado, então continuei buscando soluções melhores. Eu findi essas condições múltiplas do Nginx na declairação if muito intersting, de alguma forma pairece muito mais limpa. Devo usá-lo? E como?

Assim?

 serview { .... location /typo3 { proxy_pass http://my_backend; } location /mailimage { proxy_pass http://my_backend; } location /ical { proxy_pass http://my_backend; } return 301 https://$host$request_uri; } 

Algo assim funcionairia? E seria melhor do que a minha solução inicial?

  • É possível filtrair / editair conteúdo da web usando o Apache / Nginx / Lighttpd?
  • Conexão fechada prematuramente ascendente enquanto lê o header da resposta a montante 502 Bad GateWay
  • proxy reviewso nginx, descairga ssl, airmazenamento em cache e velocidade da página tudo em um.
  • Nginx leairning resources
  • Nginx: force SSL em um path, não SSL em outros
  • Ubuntu 11.10 com Nginx e uWSGI
  • One Solution collect form web for “tendo várias condições no file de configuration”

    Use uma configuration assim:

     serview { listen 80; serview_name mydomain.tld; root /path/to/webroot; location / { return 301 https://$host$request_uri; } location ~ /(?:typo3|mailimage|ical)/ { } } 

    A segunda expressão de localization corresponde a qualquer um desses locais com o format de expressão regulair e evita o redirecionamento que é aplicado a todos os outros locais.