Nginx redirigir a los problemas de HTTPS -- ginx camp Relacionados El problema

Nginx redirect to https issues


0
vote

problema

Español

He estado luchando por un tiempo para encontrar una solución para un problema que tengo: Necesito redirigir toda la solicitud HTTP a HTTPS, exceptuando una página específica en una cierta ubicación. Tengo lo siguiente:

  server {         listen       80;         listen       443 ssl;         server_name  myserver;         root         /var/www/example.org/htdocs;         index        index.html;         .         . }   

No puedo usar:

  server {        listen         80;        server_name    my.domain.com;        return         301 https://$server_name$request_uri; } server {            listen         443 ssl;            server_name    my.domain.com;            .            .     }   

Encontré una buena solución en aquí

El problema con la solución es que la redirecta se entra en un bucle infinitivo, la solución es algo así como, después de mis cambios:

  map $uri $example_org_preferred_proto {     default "https";     ~^/post/ "http"; } server {     listen 80;     listen 443 ssl;     server_name example.org;     root /var/www/example.org/htdocs;      if ($example_org_preferred_proto = "https") {         return 301 $example_org_preferred_proto://example.org$request_uri;     } }   

Entiendo la lógica del problema:

  1. Recibo una solicitud como: http://wwww.example.com/test - & gt; redirigió a https://wwww.example.com/test

  2. Ahora recibo una solicitud como: https://wwww.example.com/test - & gt; redirigió a https://wwww.example.com/test

  3. Ahora recibo una solicitud como: https://wwww.example.com/test - & gt; redirige a https://wwwww.example.com/test y se metió en un bucle ... < / p>

Necesito una manera de detenerse después de redirigir una vez.

Original en ingles

I been struggling for a while to find a solution for a problem that I have: I need to redirect all http request to https excepting a specific page under a certain location. I have the following:

server {         listen       80;         listen       443 ssl;         server_name  myserver;         root         /var/www/example.org/htdocs;         index        index.html;         .         . } 

I can't use:

server {        listen         80;        server_name    my.domain.com;        return         301 https://$server_name$request_uri; } server {            listen         443 ssl;            server_name    my.domain.com;            .            .     } 

I found a good solution in here

The problem with the solution is that the redirect gets into an infinitive loop, the solution is something like, after my changes:

map $uri $example_org_preferred_proto {     default "https";     ~^/post/ "http"; } server {     listen 80;     listen 443 ssl;     server_name example.org;     root /var/www/example.org/htdocs;      if ($example_org_preferred_proto = "https") {         return 301 $example_org_preferred_proto://example.org$request_uri;     } } 

I understand logic of the problem:

  1. I get a request like: http://wwww.example.com/test -> redirects to https://wwww.example.com/test

  2. Now I get a request like: https://wwww.example.com/test -> redirects to https://wwww.example.com/test

  3. Now I get a request like: https://wwww.example.com/test -> redirects to https://wwww.example.com/test and got into a loop ....

I need a way to stop after redirect one time.

  
 
 

Lista de respuestas

1
 
vote
  server {     listen       80;     server_name  wwww.example.com;     root         /var/www/example.org/htdocs;     location /test {         try_files $uri $uri/ =404;     }     location / {         return         301 https://$server_name$request_uri;     } }  server {     listen       443 ssl;     ## here goes other ssl staff which you can find by link:     ## https://gist.github.com/paskal/628882bee1948ef126dd     server_name example.org;     root /var/www/example.org/htdocs;     location /test {         try_files $uri $uri/ =404;     }     location / {         return         301 https://$server_name$request_uri;     } }   

La mejor solución es más simple. Debe servir solo una ubicación y redirigir cualquier otra cosa, así que hágalo. Si tiene problemas con el uso de dos bloques de servidores, describa en detalle.

 
server {     listen       80;     server_name  wwww.example.com;     root         /var/www/example.org/htdocs;     location /test {         try_files $uri $uri/ =404;     }     location / {         return         301 https://$server_name$request_uri;     } }  server {     listen       443 ssl;     ## here goes other ssl staff which you can find by link:     ## https://gist.github.com/paskal/628882bee1948ef126dd     server_name example.org;     root /var/www/example.org/htdocs;     location /test {         try_files $uri $uri/ =404;     }     location / {         return         301 https://$server_name$request_uri;     } } 

Best solution is simplest one. You need to serve only one location and redirect anything else - so do it. If you have problem with using two server blocks, please describe it in detail.

 
 
   
   

Relacionados problema

8  No se puede cambiar upload_max_filesize o post_max_size en php.ini  ( Cannot change upload max filesize or post max size in php ini ) 
Teniendo en cuenta, no soy SYSADMIN, solo soy un desarrollador. No puedo encontrar a nadie con el problema de exacto como yo, solo similar, y ninguna de sus...

0  ¿Dónde debo establecer encabezados HTTP, como caducar?  ( Where should i set http headers such as expires ) 
Quiero desplegar una aplicación usando Sinatra en Phuser Passenger w / nginx. Si quiero establecer el encabezado de caducidad en mi contenido estático: las ho...

1  Nodejs con error SSL (https to https): no se puede verificar el primer certificado  ( Nodejs with ssl https to https error unable to verify the first certificate ) 
Tengo dos proyectos en el mismo servidor, 1er: PHP con NGINX en el puerto 443, eso es un descanso de API. 2nd: Nodejs en Port 80 Este es un consumo de API de ...

0  Pregunta de reescritura de nginx  ( Nginx rewrite question ) 
Necesito hacer una reescritura con nginx desde /blah/.../3275 a / id / 3275 Si existe el segundo archivo, de lo contrario quiero entregarlo a Apache. Aquí est...

0  Ejecutar la aplicación Java en Nginx  ( Run java application in nginx ) 
¿Cómo puedo implementar mi aplicación web Java creada en NetBeans en Nginx? Ya lo intenté este enlace para configurar mi aplicación. < / p> ...

0  Nginx en Docker - Daemonize y adjunte a Bash [CERRADO]  ( Nginx on docker daemonize and attach to bash ) 
cerrado . Esta pregunta debe ser más enfocado . Actualmente no está aceptando respuestas. ...

3  Pasajero + Nginx: Alojamiento de una aplicación de rieles en un subdirectorio  ( Passengernginx hosting a rails application in a subdirectory ) 
Estoy tratando de implementar una aplicación en un subdirectorio /a en www.myserver.com , siguiendo los pasos en los documentos de pasajeros aquí: http://...

0  Nginx daemonset - ¿Cómo selecciono la dirección IP para enlazar?  ( Nginx daemonset how do i select which ip address to bind to ) 
Tengo un clúster de metal desnudo de Docker Enterprise K8 que se ejecuta en CENTOS8, y siguiendo a los documentos oficiales para instalar NGINX utilizando arc...

10  Unicornio vs pasajero independiente detrás de NGINX [CERRADO]  ( Unicorn vs passenger standalone behind nginx ) 
Según lo que actualmente representa, esta pregunta no es un buen ajuste para nuestro Q & Amp; un formato. Esperamos que las...

8  Cómo escribir para iniciar sesión en Python con NGINX + UWSGI  ( How to write to log in python with nginx uwsgi ) 
Tengo un servidor que ejecuta NGINX + UWSGI + PYTHON. UWSGI se está ejecutando como un demonio con el conjunto de banderas: --daemonize /var/log/uwsgi.log q...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos