Невозможно переписать URL в Nginx при использовании SSL на нестандартных портах

Я использую тестовый экземпляр моего приложения на нестандартных портах и ​​хотел бы использовать nginx для перенаправления всех входящих http запросы к https

Вот мой конфиг nginx:

I tried the above but Cant seem to get it working : please see below 

    ......
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

    server {
       listen                       9000;
       server_name                  iossapp1.com;

       if ($scheme = 'http') {
            rewrite ^               https://$server_name:9443$request_uri? permanent;
       }
    }

    ssl_certificate                 /etc/nginx/ssl/server.crt;
    ssl_certificate_key             /etc/nginx/ssl/server.key;

    server {
       listen                            9443 ssl;
       server_name                  iossapp1.com;

      error_page   497             https://$host:9443$request_uri;

       location / {
            proxy_pass              http://127.0.0.1:9001;
            proxy_set_header        Host            $host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
       }
    }
}

Я ссылался на следующий URL, но, похоже, это не помогло: http://forum.nginx.org/read.php?2,155978,213340

Чтобы добавить к проблеме: проблема появляется только когда я размещаю форму на сервере, вот несколько примеров из файла /var/log/nginx/access.log:

127.0.0.1 - - [07/Jan/2013:17:29:14 +0800] "GET /admin/logout HTTP/1.1" 302 0 "https://iossapp1.com:9443/admin/iosIndex" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11"

127.0.0.1 - - [07/Jan/2013:17:32:45 +0800] "POST /admin/editStaff HTTP/1.1" 302 0 "https://iossapp1.com:9443/admin/editStaff?staff.id=612" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11" 127.0.0.1 - - [07/Jan/2013:17:32:45 +0800] "GET /admin/staffIndex HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11"

127.0.0.1 - - [07/Jan/2013:17:35:45 +0800] "POST /admin/authenticate HTTP/1.1" 302 0 "https://iossapp1.com:9443/admin/login" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11" 127.0.0.1 - - [07/Jan/2013:17:35:45 +0800] "GET /admin/masterIndex HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11"

В отличие от GET URL ведет себя правильно так: 127.0.0.1 - - [07/Jan/2013:17:36:21 +0800] "GET /admin/masterIndex HTTP/1.1" 200 2324 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11"

Я заметил числовое значение после кода ответа (302, 304), которое равно 0, когда перенаправление будет неудачным, в тех случаях, когда оно работает, числовое значение не равно нулю. Что означает это число?

1 ответ

Решение

Я нашел решение:

Моя запись дляproxy_set_header Host $host:$server_port;

изначально отсутствовал $server_port

Источник: https://stackoverflow.com/questions/10168155/nginx-proxy-https-to-http-on-non-standard-port

Теперь это работает! =D

Другие вопросы по тегам