<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite xml:lang="en">psgi-specs/PSGI.pod at master · plack/psgi-specs</cite> (<time>2017-06-07 13:58:55 +09:00</time>) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/plack/psgi-specs/blob/master/PSGI.pod#user-content-The-Environment">https://github.com/plack/psgi-specs/blob/master/PSGI.pod#user-content-The-Environment</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <cite>Web Transport Processing</cite></li></ul></refs></section><section><h1>値</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <code>psgi.url_scheme</code> の値は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求URL</anchor>によって <code>http</code> または <code>https</code>
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>
とされています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> 「要求URL」と規定されていることから<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">対象URL</anchor>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">scheme<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">URL scheme</title></f>のようにも思えますが、
だとすると <code>http</code> でも <code>https</code> でもないときにどう扱うべきかが謎です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> 実装によっては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">下位層の接続</anchor>が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TCP</anchor> か <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor> かによって値を決めています。
<cite>Web Transport Processing</cite> もこの方法を採用しています <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;9</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <code>X-Forwarded-*</code> のような<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求ヘッダー</anchor>を検査して、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">逆プロキシ</anchor>を経由した時点での<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">下位層の接続</anchor>の種類によって値を設定する
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Plackミドルウェア</anchor>もあるようです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> 
<code>p6w.url-scheme</code> は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket</anchor> の時 <code>ws</code> や <code>wss</code> のような値を使います。</p></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <cite xml:lang="en">uwsgi protocol magic variables — uWSGI 2.0 documentation</cite>
(<time>2017-05-19 04:33:44 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://uwsgi-docs.readthedocs.io/en/latest/Vars.html#uwsgi-scheme">http://uwsgi-docs.readthedocs.io/en/latest/Vars.html#uwsgi-scheme</anchor-external></p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <cite xml:lang="en">uwsgi/psgi_plugin.c at master · unbit/uwsgi</cite>
(<time>2017-06-07 14:46:23 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/unbit/uwsgi/blob/master/plugins/psgi/psgi_plugin.c">https://github.com/unbit/uwsgi/blob/master/plugins/psgi/psgi_plugin.c</anchor-external></figcaption><blockquote><p>// psgi.url_scheme, honour HTTPS var or UWSGI_SCHEME</p></blockquote></figure></section></body></html>