fastcgi_param REQUEST_SCHEME $scheme
Maxim Dounin
mdounin at mdounin.ru
Wed Jun 3 02:41:06 UTC 2015
Hello!
On Tue, Jun 02, 2015 at 04:59:53PM -0400, S.A.N wrote:
> РНР скрипты которые работали под Apache, получали перемененную окружения
> REQUEST_SCHEME, в fastcgi_params этот параметр не назначается, я прописал
> fastcgi_param REQUEST_SCHEME $scheme.
>
> Вопрос, не нарушил ли я спецификацию FastCGI, если нет, тогда почему этот
> параметр не указан в fastcgi_params из коробки?
Параметр REQUEST_SCHEME не предусматривается спецификацией CGI (и
соответственно FastCGI), и в общем случае может содержать
произвольное значение. В Apache 2.3.11+ через него передают схему
запроса. Больше, судя по всему, это решение нигде не работает:
http://stackoverflow.com/questions/18008135/is-serverrequest-scheme-reliable
Однако в целом мне такой подход кажется куда более правильным, чем
неочевидные проверки параметра HTTPS (который тоже ни разу не
стандартный), и наверное добавить в fastcgi_params по умолчанию
стоит.
Патч:
# HG changeset patch
# User Maxim Dounin <mdounin at mdounin.ru>
# Date 1433298498 -10800
# Wed Jun 03 05:28:18 2015 +0300
# Node ID dbe6d01361b01c7e3b2a80f40492a180d242abcb
# Parent 0a096e2e51fcbb536007d94bf3edfc308e214f56
Added REQUEST_SCHEME parameter.
The REQUEST_SCHEME parameter was introduced in Apache 2.3.11 and seems
to be used by some scripts now. It looks more logical than previously
used HTTPS.
diff --git a/conf/fastcgi.conf b/conf/fastcgi.conf
--- a/conf/fastcgi.conf
+++ b/conf/fastcgi.conf
@@ -11,6 +11,7 @@ fastcgi_param DOCUMENT_URI $docum
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param HTTPS $https if_not_empty;
+fastcgi_param REQUEST_SCHEME $scheme;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
diff --git a/conf/fastcgi_params b/conf/fastcgi_params
--- a/conf/fastcgi_params
+++ b/conf/fastcgi_params
@@ -10,6 +10,7 @@ fastcgi_param DOCUMENT_URI $docum
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param HTTPS $https if_not_empty;
+fastcgi_param REQUEST_SCHEME $scheme;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
diff --git a/conf/scgi_params b/conf/scgi_params
--- a/conf/scgi_params
+++ b/conf/scgi_params
@@ -9,6 +9,7 @@ scgi_param DOCUMENT_ROOT $document
scgi_param SCGI 1;
scgi_param SERVER_PROTOCOL $server_protocol;
scgi_param HTTPS $https if_not_empty;
+scgi_param REQUEST_SCHEME $scheme;
scgi_param REMOTE_ADDR $remote_addr;
scgi_param REMOTE_PORT $remote_port;
diff --git a/conf/uwsgi_params b/conf/uwsgi_params
--- a/conf/uwsgi_params
+++ b/conf/uwsgi_params
@@ -9,6 +9,7 @@ uwsgi_param PATH_INFO $documen
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param HTTPS $https if_not_empty;
+uwsgi_param REQUEST_SCHEME $scheme;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru