web-dev-qa-db-ja.com

nginxは、(ポート443にリダイレクトする代わりに)ポート80で要求されたときに、空のファイルをダウンロードします

私のnginxWebサーバーは、彼がすべきことをしません。サーバーへのすべてのhttp://リクエストはhttp 301でhttps://にリダイレクトする必要があります。これは、変更なしで機能しなくなるまで、過去数日間は正常に機能していました。

Nginxは、タイプが「application/octet-stream」で、次のコンテンツ(崇高に読める)の空のファイルを返します。

0000 1204 0000 0000 0000 0300 0000 8000
0400 0000 0000 0500 ffff ff00 0004 0800
0000 0000 7fff 0000 0000 0807 0000 0000
0000 0000 0000 0000 01

最初に行を削除しようとしました

default_type application/octet-stream;

私のnginx.confからですが、役に立ちませんでした。

Http-responseヘッダーは

Status: �����

Http://からhttps://への301リダイレクトのサーバーブロックは次のようになります

server {
   listen 80;
   listen [::]:80;
   server_name my.tld www.my.tld;
   return 301 https://$server_name$request_uri;
}

Nginxは、http://リクエストを受信して​​も、何もログに記録しません。 (/var/log/nginx/error.log | /var/log/nginx.access.log)。また、PHP7.0-fpm。

必要なものはすべてインストール、更新、アップグレードされます。サービスとサーバー自体の再起動は役に立ちませんでした。

これがcurl-v http://my.tld/ からの出力です。

* Connected to my.tld (123.123.123.123) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.38.0
> Host: my.tld
> Accept: */*
> 
< HTTP/1.1 200 OK
< Mime-Version: 1.0
< Date: Thu, 06 Oct 2016 06:10:53 GMT
< X-Transformed-From: HTTP/0.9
< Transfer-Encoding: chunked
< Connection: keep-alive
< 
* Connection #0 to Host my.tld left intact

Nginxが301の永続的なリダイレクトを返す必要があるのに200OKを返すのはなぜですか?

私は何も変更していません、それは同じ設定で動作しました...誰かが私を助けてくれることを願っています:-(。それはおそらくDNSの問題でしょうか?

最高、Unkn0wn0x

3
Unkn0wn0x

これを追加するのは、これが関連トピックのグーグル検索に表示される唯一のページの1つだからです。

私は同じ問題を抱えていましたが、最終的に解決策はあなたが概説したものと同じであることがわかりました。

どうやらhttp2 with listen 80(sslなし)はブエノではありません。そして、これはすべてのnginx構成チェックをすり抜けるため、さらに混乱します。

2
Winston Krauss

私は問題を解決しました。これは、独自のルートディレクトリが構成されたサブドメインの構成ファイルでした。サブドメインの設定ファイルには

listen 80 http2;
listen [::]:80 http2

これは、エラー/ログファイルなどなしでWebサーバー全体に影響を及ぼしました(nginx -tもポジティブ)。 nginxを再インストールし、構成ファイルを段階的にバックアップした後、エラーが見つかりました。

ご支援ありがとうございます。

最高、Unkn0wn0x

2
Unkn0wn0x

X-Transformed-Fromヘッダーが疑わしいようです。確認する netstat -lnp nginxが実際にポート80をリッスンしている場合、またはそれをリッスンしている他のプログラムがある場合はコマンド。

システムが危険にさらされる可能性があります。その場合、オンラインにする前に、バックアップから復元してシステムを更新する必要があります。

0
Tero Kilkanen

X-Transformed-Fromヘッダーに関連するものは何も見つかりません。私のnginxは次のポートでリッスンしています:

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 10282/nginx -g daem tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 10282/nginx -g daem tcp6 0 0 :::443 :::* LISTEN 10282/nginx -g daem tcp6 0 0 :::80 :::* LISTEN 10282/nginx -g daem

Https:// my.tldをリクエストし、その後http:// my.tldをリクエストすると、チャームのように機能します。モバイルでは、シークレット/プライベートタブでリクエストすると http://my.tld すぐにhttps://にリダイレクトされます。

ドメインで http://mxtoolbox.com/ からツール「HTTPlookup」を試しましたが、エラーが返されます。

HTTP connect The server committed a protocol violation. Section=ResponseStatusLine (http://my.tld)

一部のファイアウォールルール(ufw)などがポート80でのリクエストをブロックしているかどうかを確認しましたが、そうではありませんでした。

ufwステータス

80                         ALLOW       Anywhere
80 (v6)                    ALLOW       Anywhere (v6)
443                        ALLOW       Anywhere
443 (v6)                   ALLOW       Anywhere (v6)

My.tldには、いくつかのhtmlファイルのみがあり、phpなどはありません。

Mxtoolboxエラーは、サーバー(http:// /ポート80)に接続できなかったことを示していますが、可能です。 DNSの設定も問題ありません。

私は途方に暮れています:-(

よろしく、Unkn0wn0x

0
Unkn0wn0x