URLにポートを隠すにはどうすればいいですか?

私は何が欠けていますか?私が mysite.com ではなく mysite.com:9999 に行くと、私は自分のサイトを手に入れることができます。する必要があります?私は実際には、ユーザーがURLにそれを入力する必要がないので、ポートを隠すことを実際に試みているわけではありません。これはどこかのApache構成設定ですか? httpd.config、コンテナの設定などを調べるべきでしょうか? Apacheサーバー上の仮想ホストです。どんな提案も感謝しています。

Edit- the working virtual host blocks in virtualhosts.conf looks like this:

起動時に仮想ホストのエントリの名前は次のようになります。

NameVirtualHost *:700 
NameVirtualHost *:710
...
NameVirtualHost *:760

httpバージョンの作業ブロックの下には次のように表示されます。


     ServerName webdev.url.com
     ServerAdmin [email protected]

     # Comment out when OC4J instance is down for maintenance:
     
         Oc4jMount 
     

     # Uncomment when OC4J instance is down for maintenance:
     # DocumentRoot "/org/dev"

     # - Restrict 'Cross-Site-Tracking' or XST
     RewriteEngine on
     RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
     RewriteRule .* - [F]

     
         DirectoryIndex index.jsp
     
         ErrorLog "|/opt/app/oracle/product/AS10.1.2/Apache/Apache/bin/rotatelogs/logs/dev_error_log 440"
             CustomLog "|/opt/app/oracle/product/AS10.1.2/Apache/Apache/bin/rotatelogs/logs/dev_access_log 440" common


     
         Order deny,allow
         Deny from all
         Allow from ####internal ip addresses####
     

 

ポートを指定する必要がある新しいポートは次のようになります。

## - for Mobile 
 
     ServerName mdev.url.com
     ServerAdmin [email protected]

     # Comment out when OC4J instance is down for maintenance:
     
         Oc4jMount/msitedev
     

     # - Restrict 'Cross-Site-Tracking' or XST
     RewriteEngine on
     RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
     RewriteRule .* - [F]

     
         DirectoryIndex m.jsp
     

     ErrorLog "|/opt/app/oracle/product/AS10.1.2/Apache/Apache/bin/rotatelogs/logs/mdev_error_log 440"
     CustomLog "|/opt/app/oracle/product/AS10.1.2/Apache/Apache/bin/rotatelogs/logs/mdev_access_log 440" common


    # 
    #     Order deny,allow
    #     Deny from all
    #     Allow from ####
    # 


 

ここでも、ここで何かがURLにポート#(例:710)を入力する必要性を抑制しているかどうかを判断しようとしています。調べると、どこにもhtaccessファイルが存在しないように見えます。

6
あなたは下のLazyBadgerから答えを見ますか?あなたがゾーンファイルを見たり、SRVステートメントがあるかどうかを確認しようとしているドメインの1つを掘り下げることは可能ですか?
追加された 著者 William 'Ike' Eisenhauer,
ポート80で何か聞いていますか?おそらく 以外の何か? のようなもの? (私は別のSEであなたを追い出すつもりはない)、これは ServerFault
追加された 著者 William 'Ike' Eisenhauer,
残念ながら、nslookupとdigはちょうど問題を混乱させ、仮想ホストのどれでも使用されていない別のIPとポート番号を与えました。 devボックスにはゾーンファイルがないようです。答えは別の箱のどこかにあると思う。もう1つ別のボックスを指し示す別名を指し示す別名を発見しました。おそらく、あまりにもわかりにくい理由があったのですが、私はあなたに言います。
追加された 著者 Dallas,
良いニュースは、これが今日のdevのケースであることを発見したことです。devは内部だけなので、人生は良いです。テストとプロダクトは別のボックスにあり、ロードバランサを通じてさまざまな方法で処理されます。私はまだ質問を終わらせたくはありません、なぜなら、私はまだこれがどのように動作するかを学んでいないからです。私はサービスロケーションサポートステートメントを探します... LazyBadgerのリンクを読んでからは、それらを使用すると公開サイトには向かないと思われます。
追加された 著者 Dallas,
.htaccessファイルがないことを確認してください。
追加された 著者 Dallas,
そのコンテナのdefault-web-site.xmlには次のようなものがあります。
追加された 著者 Dallas,
それがより適切だと思うなら、それを再作成するのではなく、質問を移行する方法はありますか?ある時点で Listen#。#。#:#80: NameVirtualHost#。#。#:#80:ブロックがブロックされました。
追加された 著者 Dallas,

4 答え

URLをWebブラウザの http://www.foo.com に入力すると、ポート80で常に接続しようとします。

ポート80はHTTPリクエストのデフォルトであるため、ポートは隠されていることはあまりありませんが、そのポートは想定されています

同じ行に沿って、 https://www.foo.com を参照すると、別のポート( https:// www。 foo.com:8080 )。ポート443は、SSL/TLS要求のデフォルトポートです。

魅力的な理由がない限り(たとえば、マシン上で2つのWebサービス(ApacheやIISなど)を同時に実行している場合など)は、新しい仮想ホストをポート80に変更するのが最善でしょう。私はあなたが同様の質問をしたので、 a>。モバイルクライアントを別のサイト(またはアプリなど)にリダイレクトする場合は、 mod_rewrite を実行します。

例えば:


DocumentRoot /www/mainwebsite
ServerName www.foo.com 
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos" [NC]
RewriteRule ^$ http://m.foo.com/ [L,R=302]




DocumentRoot /www/mobileapp
ServerName m.foo.com
# You might check for the USER_AGENT here and redirect to the main site if not found

これは遅れていて、上記は少しばかりかもしれません。これがあなたに役立つなら、誰かがそれをより正確に編集できるかもしれません。

14
追加された
foo.comをfoo.com:9999にリダイレクトするために、ポート80のリクエストを少なくとも "リッスン"しないで、ポート80から別のポートにリクエストをリダイレクトする方法は考えられません。 .htaccessファイルが何らかの形でリダイレクトを処理している場合、foo.com上でポート80でリッスンする必要があります。.htaccessファイルはVirtualHostのDocumentRootにあり、ポート80でリスニングします。上記の質問のセグメント(動作中のホストの1つから質問を編集)考えて... mod_proxyも関与している可能性があります。
追加された 著者 William 'Ike' Eisenhauer,
@dallas動作している仮想ホストのいくつかのルートにある.htaccessファイルを確認できますか?昼食後にもう少しこれを考えます。
追加された 著者 William 'Ike' Eisenhauer,
私は朝にチェックすることができます。私たちが最初にリダイレクトを行う方法を見ていたら、.htaccessファイルでそれを行うことが提案されました。私は周りを見回し、既存のものを見ませんでした。私は実際にどこを見ていたのか分からなかった。あなたがrootと言うと、あなたはその場所がそのVH座席の設定ファイルかDocumentRootかどうか?私はDocumentRootの主なサイトのdevの領域で働いているものは見当たりませんでした。
追加された 著者 Dallas,
ポートまでは、80または443以外のポートを使用する複数の仮想ホストがすでに同じボックスにあり、URLにポートを指定する必要はありません。リダイレクトは既に処理されていますが、提案に感謝します。とにかく私は。* mobile * android | android * mobile。* のためにタブレットを避けることに気付きました。私たちは、モバイルがタブレットでうまく見えるように設計していますが、メインサイトが十分なときに自動的にリダイレクトする必要はなく、いつでもリンクを使って選択することができます。
追加された 著者 Dallas,

DNS SRVレコード(RFC 2782)のマニュアルは次のとおりです。実際に使用するポートに合わせてデフォルトのポートを変更します。

_http._tcp.example.com. IN      SRV 0    5      80   www.example.com.

最後のフィールドの次にはポートがあり、実際の値を持つことができます。 DNS SRVレコードは、ドメインのデフォルトのhttpポートを再定義することも、ドメイン内の(一部の)ホストのみを再定義することもできます

5
追加された
@ネイサンはい。関連するレコードを掘り下げる
追加された 著者 bish,
それは本当にとてもきれいです!ありがとう怠惰なバッガー!私は前にSRVレコードに気付きましたが、実際にどのように使用するかは考えていませんでした。あなたが知っている、私は答えようとする前に私はSTFWをしましたが、私は正しい言葉を使って検索してはいけません。
追加された 著者 William 'Ike' Eisenhauer,
@LazyBadgerしたがって、これが実際にどのように既存のホストで行われているかどうかを確認するには、Zone Fileを参照する必要がありますか?
追加された 著者 William 'Ike' Eisenhauer,

HTTPプロトコルはデフォルトでポート80を使用します。非標準ポートを使用するようにWebサーバーを構成する場合は、URLにポートを指定する必要があります。それを隠す方法はありません。

Apacheでは、 httpd.conf にリスニングポートを設定できます。例:

Listen 127.0.0.1:80

ただし、これは仮想ホストの設定で上書きすることができます。


3
追加された
@Dallas:あなたのvhostの設定は、 httpd.conf または別のconfファイル(通常は別のconfigsディレクトリの httpd-vhosts.conf )で指定できます。あなたの設定ディレクトリで '9999'の検索をするだけで、そのポート番号をどこで指定しているのかを知ることができます。それから、それを80に置き換えてください。あなたは良いと思ってください。
追加された 著者 Lèse majesté,
@Dallas:通常、両方で指定されます。 VirtualHostディレクティブで指定したものがListenディレクティブと異なる場合、その仮想ホストに対してVirtualHostディレクティブの設定に従います。
追加された 著者 Lèse majesté,
@Dallas:私の答えの例のような ディレクティブ宣言になります。
追加された 著者 Lèse majesté,
virtualhosts.confはすべてが見える場所ですが、使用されているポートを隠しているようには見えません。
追加された 著者 Dallas,
はい、各ポートに ServerName ... ServerAdmin ... RewriteEngine On ... RewriteOptions継承... ErrorLog/logs/error_log ブロックが宣言されています。既存のもの(ポートを入力する必要はありません)と作成しようとしているもの(どちらのもの)との間に何か違うものはありません。別の場所に何かあるはずです。
追加された 著者 Dallas,
それぞれの ブロックには Oc4jMount RewriteCond%{REQUEST_METHOD} ^(TRACE/TRACK)および RewriteRule。 [F] 。おそらくそれはこれらの一つですか?
追加された 著者 Dallas,
ListenとVirtualHostの両方にポートを指定しています。私はそれがそれを無効にしていることを認識していませんでした。私はちょうどそれが両方で指定されなければならないと仮定しました。
追加された 著者 Dallas,
同じ箱にある他の仮想ホストのためにすでにそれを行っていますが、どこを見ているのか、それがどうなっているのか分かりません。
追加された 著者 Dallas,

私は今、自分の問題に特定の答えを投稿したことがないことを認識しています。

最後に、webcache.xmlに詳細を追加してURLに指定されたポートがなくてもURLを動作させる必要がありました。

1
追加された