デフォルトのHTTPポートをアプリケーションにリダイレクトする

デフォルトのHTTPポートをアプリケーションにリダイレクトする

私のCentOSサーバーには、mydomain.comポート8880で実行されているsvn Webアプリケーションがあります。ポートを隠したいです。この時点で誰かがアクセスしたい場合は、経由でアクセスする必要がありますhttp://thisdomain.com:8880/svn。アプリケーションをアクセス可能にしたいですhttp://thisdomain.com/

答え1

オプション1:NATポート転送

ここでやるべきことは、外部ポート80からの要求をポート8880で実行されている内部プログラムにリダイレクトするだけであれば、次のようになります。iptablesフォワードポートそのために:

# iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j REDIRECT --to 127.0.0.1:8880

理解すべきいくつかの点は次のとおりです。

  1. 私の考えでは、あなたは何かをしていると思います。仮想プライベートサーバーそのため、eth0インターフェイス名が正しくない可能性があります。その場合は、交換する必要があります。

    ただし、共有ホスティングを使用している場合、またはVPSでそれを許可していない場合は、iptables次のオプションに進んでください。

  2. 上記のように、このルールは、この内部プログラムがlocalhostインターフェースでのみ受信するように構成されていると仮定します127.0.0.1。これにより、要求された「隠し」動作が実行されます。

  3. 既存のファイアウォールルールが現在作成されているルールを妨げる可能性があります。現在、ルールを変更するまでは変更する方法はありませんiptables。しかし、それでもうまくいかない場合は、盲目的に次のような他のルールを追加してみてください。

    # iptables -A FORWARD -p tcp -i eth0 --dport 80 -j ACCEPT
    

    FORWARD基本的なチェーンルールがある場合は、DENY同様のものが必要です。

  4. 起動時にこれらのルールがあることを確認する必要があります。

    十分に注意を払ったら、/etc/sysconfig/iptablesCentOSで編集してこれを行うことができます。このファイルはコマンドライン言語と同様の構文を使用しますが、同じではありませんiptables。誤ってパブリックサーバーで自分自身をロックする可能性を減らすには、ローカル仮想マシンでこれをテストする必要があります。

    コマンドを挿入する方が安全です/etc/rc.localが、iptablesサービスを再起動すると(たとえばservice iptables reload)、カスタムルールが削除されます(/etc/sysconfig/iptables

これをすべて読んで、なぜこのオプション1を作成し、次のオプション2をより簡単にしたのか疑問に思うなら、これはより効率的だからです。ポート転送を設定すると、リソースに関する限り、デフォルトでは「無料」です。

オプション2:HTTPプロキシ

もう一つの方法は一種ですHTTPプロキシ。使った小規模エージェントこのようなことのために。 NATポート転送よりも柔軟で、オペレーティングシステムのファイアウォールを壊す必要はありません。

CentOS用にパッケージ化されています。エッフェル、EPELリポジトリを有効にした後は、単にyum install tinyproxy

在庫ファイルで次のように変更します/etc/tinyproxy/tinyproxy.conf

Port 80
Upstream localhost:8880

また、AllowTinyproxyが外部IPからの接続を許可するように、次の行をコメントアウトしてください。

# Allow 127.0.0.1

service httpd stopservice tinyproxy startこれを開始しようとすると、Apacheはポート80を使用するため、実行していないことを確認する必要があります()。

Tinyproxyのドキュメントは簡潔な参照であるため、この使用法がUpstreamTinyproxyのハッキングを使用するよりも優れた選択肢であるかどうかはわかりません。リバースプロキシ特徴。しかし、私にはうまくいき、設定ファイルをあまり変更する必要がなかったので、そうしました。

なぜ最初からこれにApacheを使用しなかったのか疑問に思うなら、その理由は単により複雑でより多くのリソースを必要とするからです。Apacheにはプロキシ機能があります。しかし、Apacheのすべての機能が必要ない限り、Tinyproxyを使用する理由はありません。

NAT ポート転送とは異なり、Tinyproxy を実行するにはいくつかのシステムリソースが必要です。少しRAMが必要で、トラフィックレベルが十分に高い場合I/O制限。ただし、サーバーが特に忙しくない場合は、サーバーが稼働しているという事実さえ気付かない可能性があります。

答え2

これは httpd.conf ファイル内の仮想ホストとして実行されます。それは次のとおりです。

<VirtualHost thisdomain.com:8880>
DocumentRoot /www/docs/svn/myapp
ServerName thisdomain.com
</VirtualHost

Apacheが正しいポートでリッスンしていることを確認してください。その場所を見つけてlisten 80埋め込む listen 8880

関連情報