Я настроил Nginx таким образом:Как пересылать конкретные запросы HTTPS в Nginx
#/etc/nginx/conf.d/default.conf
server {
listen 8081 default_server;
listen [::]:8081 default_server ipv6only=on;
server_name localhost;
listen 443 ssl;
location /site/ {
proxy_pass http://127.0.0.1:8084/;
}
# 404 occured
#location /site/secure/ {
# proxy_redirect http://localhost:8081/site/secure/ https://localhost/site/secure/;
#}
location/{
root /srv;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
}
Я включил протокол HTTPS. У меня есть несколько URLs:
http://127.0.0.1:8081/site/secure/
http://127.0.0.1:8081/sute/path1/...
http://127.0.0.1:8081/sute/path2/...
Я хочу, чтобы перенаправить только http://127.0.0.1:8081/site/secure/*
запросы https://127.0.0.1/site/secure/*
, так что пользователь не может использовать этот адрес с простым HTTP.
Но когда я бег Nginx с этим перенаправлением:
location /site/secure/ {
proxy_redirect http://localhost:8081/site/secure/ https://localhost/site/secure/;
}
Я получаю ответ 404:
<html>
<head>
<title>404 Not Found</title>
</head>
<body bgcolor="white">
<center>
<h1>404 Not Found</h1>
</center>
<hr>
<center>nginx/1.4.6 (Ubuntu)</center>
</body>
</html>
Как я могу настроить Nginx перенаправить некоторый запрос на HTTPS в правильном направлении?
Благодарим за отзыв. Но у меня есть [читать] (http://stackoverflow.com/documentation/nginx/3631/useful-redirects/12493/https-redirect#t=201702201618433467434), что лучше вернуть код состояния 307, поскольку он сохраняет тип запроса. –
Действительное рассмотрение. Но это также зависит от приложения. Возможно, вам понадобится POST для http, чтобы с ошибкой избежать маскировки серьезной ошибки. –
У меня проблема при реализации текущего решения. Когда я отправляю запрос на '/ site/secure /' через http, у меня есть заголовок запроса 'Content-Type: application/json; charset = UTF-8'. Но когда он перенаправлен на запрос https, у него нет 'Content-Type', поэтому я получаю сообщение об ошибке с сервера. Вы знаете, как сохранить «Content-Type» во время перенаправления на https? Спасибо за ответ. –