イントラネット ペネトレーションを使用すると、無料の第 2 レベル ドメイン名が生成され、このドメイン名とリモート サーバー ポートをローカル ポートにマッピングできます。
例: http://cn-2.openfrp.top:8888 8888 は、ローカル ポート 80 をマッピングするリモート サーバー ポートです。
次のような間違った Nginx 構成
server {
listen 80;
server_name test-emlog.com;
root /www/wwwroot/emlog;
index index.html index.htm index.php;
location /blog {
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:89/;
}
location ~* \.(eot|ttf|woff|svg|otf)$ {
add_header Access-Control-Allow-Origin *;
}
}
上記の設定に従って、ブラウザに http://cn-2.openfrp.top:8888/blog と入力すると、図に示すように、すべての静的リソースを読み込むことができないことがわかります。
間違った理由
しかし、失敗した接続をコピーしてポート 8888 を追加すると、正常にアクセスできることがわかります。
エラーの原因: リクエスト時にリモート サーバー ポートに到達しませんでした。静的ファイル。
理由が見つかりました。次に、設定エラーのポイントが見つかりました:
proxy_set_header Host h o s t : host: host:サーバーポート;
これは構成エラーが原因で発生します
解決
修正 proxy_set_header ホスト ホスト : ホスト: host:server_port; is proxy_set_header Host $http_host;
変更内容は以下のとおりです
server {
listen 80;
server_name test-emlog.com;
root /www/wwwroot/emlog;
index index.html index.htm index.php;
location /blog {
proxy_set_header Host $http_host; //只修改这一行
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:89/;
}
location ~* \.(eot|ttf|woff|svg|otf)$ {
add_header Access-Control-Allow-Origin *;
}
}
proxy_set_header 共通設定の説明
この記事の構成を例として、いくつかの変数の値を取り上げます。
変数 | この記事での価値 | 説明する |
---|---|---|
$host | cn-2.openfrp.top | http https プレフィックスなし |
$http_host | cn-2.openfrp.top:8888 | http https プレフィックスなし |
$サーバーポート | 80 | リッスン値 |
$proxy_host | 89 | proxy_pass 値 |