LINUX.ORG.RU
решено ФорумAdmin

nginx как настроить без 301?

 


0

1

Привет. Как настроить nginx, чтоб он не отдавал (301) при запросе, но при этом редирект на https работал.

curl site.com

<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
</body>
</html>

А нужно чтоб сразу отдавал содержимое, как при таком запросе curl https://site.com.

как тут сделано curl ifconfig.me. При этом сайт работает на https.


Без указания протокола браузер по-умолчанию использует HTTP(80)
Поменять порт (с 80 на 443) без переустановки ТСР соединения клиентом нельзя

zolden ★★★★★
()
Ответ на: комментарий от zolden

тогда как сделать, чтоб он в браузере отдавал https страницу? А курлом отдавал содержимое. Как тогда настроен этот сайт?

bikes
() автор топика
Ответ на: комментарий от bikes

Код 301 - это стандартный и технический корректный способ для такого сценария.
Можете настроить для браузера редирект по 301, а для curl отдавать без редиректа, используя разную логику на основе User-Agent

zolden ★★★★★
()
Ответ на: комментарий от zolden

Спасибо. Есть же еще http, wget, fetch, bat. Не думал, что так плохо все будет.

bikes
() автор топика
curl ifconfig.me

При этом сайт работает на https.

Нет, не работает.

$ curl -vvv ifconfig.me
* Rebuilt URL to: ifconfig.me/
*   Trying 216.239.38.21...
* TCP_NODELAY set
* Connected to ifconfig.me (216.239.38.21) port 80 (#0)
> GET / HTTP/1.1
> Host: ifconfig.me
> User-Agent: curl/7.52.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Sun, 09 Aug 2020 06:29:03 GMT
< Content-Type: text/plain; charset=utf-8
< Content-Length: 13
< Access-Control-Allow-Origin: *
< Via: 1.1 google
<
* Curl_http_done: called premature == 0
* Connection #0 to host ifconfig.me left intact

Обратите внимание на порт 80 и полное отсутствие информации от curl про рукопожатие TLS.

anonymous
()
Ответ на: комментарий от anonymous

ifconfig

Он юзерагент проверяет. Добавь -A 'Googlebot' или -A 'Firefox lor edition', увидишь.

anonymous
()
Ответ на: комментарий от bikes

Сам ты одно место, это же простейшие вещи.

Это вне блока server:

map $http_user_agent $xzua {

default        1;

"~*curl"       0;
"~*wget"       0;
""
}
Это в server:
 if ($xzua) {
    return 301 https://$host$request_uri;
  }
Мог ошибиться, т.к. писал прямо тут, но смысл думаю понятен.

anonymous
()
Ответ на: комментарий от anonymous

вот не поверишь именно так и сделал. Простейшие, когда знаешь как конфигурировать nginx. А так не один час просидел, чтоб написать несколько этих строчек .

bikes
() автор топика
Последнее исправление: bikes (всего исправлений: 1)

Почему-бы не отдавать curl и прочим тот же самый редирект?

MrClon ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.