私の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
理解すべきいくつかの点は次のとおりです。
私の考えでは、あなたは何かをしていると思います。仮想プライベートサーバーそのため、
eth0
インターフェイス名が正しくない可能性があります。その場合は、交換する必要があります。ただし、共有ホスティングを使用している場合、またはVPSでそれを許可していない場合は、
iptables
次のオプションに進んでください。上記のように、このルールは、この内部プログラムがlocalhostインターフェースでのみ受信するように構成されていると仮定します
127.0.0.1
。これにより、要求された「隠し」動作が実行されます。既存のファイアウォールルールが現在作成されているルールを妨げる可能性があります。現在、ルールを変更するまでは変更する方法はありません
iptables
。しかし、それでもうまくいかない場合は、盲目的に次のような他のルールを追加してみてください。# iptables -A FORWARD -p tcp -i eth0 --dport 80 -j ACCEPT
FORWARD
基本的なチェーンルールがある場合は、DENY
同様のものが必要です。起動時にこれらのルールがあることを確認する必要があります。
十分に注意を払ったら、
/etc/sysconfig/iptables
CentOSで編集してこれを行うことができます。このファイルはコマンドライン言語と同様の構文を使用しますが、同じではありません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
また、Allow
Tinyproxyが外部IPからの接続を許可するように、次の行をコメントアウトしてください。
# Allow 127.0.0.1
service httpd stop
service tinyproxy start
これを開始しようとすると、Apacheはポート80を使用するため、実行していないことを確認する必要があります()。
Tinyproxyのドキュメントは簡潔な参照であるため、この使用法がUpstream
Tinyproxyのハッキングを使用するよりも優れた選択肢であるかどうかはわかりません。リバースプロキシ特徴。しかし、私にはうまくいき、設定ファイルをあまり変更する必要がなかったので、そうしました。
なぜ最初からこれに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