How to redirect on the same port from http to https with nginx reverse proxy How to redirect on the same port from http to https with nginx reverse proxy nginx nginx

How to redirect on the same port from http to https with nginx reverse proxy


Found something that is working well :

server {        listen 8001  ssl;        ssl_certificate /home/xxx/server.crt;        ssl_certificate_key /home/xxx/server.key;        error_page 497 301 =307 https://$host:$server_port$request_uri;        location /{            proxy_pass http://localhost:8000;            proxy_redirect off;            proxy_set_header Host $host:$server_port;            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;            proxy_set_header X-Forwarded-Ssl on;        }}


Are you sure your solution is working? It is listening for 8001 ssl. Will it accept http request?

I do it this way:

server {    listen   80;    server_name  yourhostname.com;    location / {            rewrite ^(.*) https://yourhostname.com:8001$1 permanent;    }}

Then goes your config:

server {    listen 8001  ssl;    ssl_certificate /home/xxx/server.crt;    ssl_certificate_key /home/xxx/server.key;    location / {        proxy_pass https://localhost:8000;        proxy_redirect off;        proxy_set_header Host $host:$server_port;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_set_header X-Forwarded-Ssl on;        proxy_set_header  X-Forwarded-Proto  https;    }}


This worked for me:

server {listen       80;server_name  localhost;...if ($http_x_forwarded_proto = "http") {      return 301 https://$server_name$request_uri;}location / {    proxy_set_header X-Forwarded-Host $host;    proxy_set_header X-Forwarded-Server $host;    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    proxy_pass http://localhost:8080;}...}