web-dev-qa-db-de.com

Wie verstecke ich den Port in meiner URL?

Was vermisse ich? Wenn ich zu mysite.com:9999 gehe, erhalte ich meine Site, aber nicht mysite.com. Offensichtlich sollten die Benutzer den Port nicht eingeben müssen. Was muss ich also tun? Ich versuche nicht wirklich, den Port so sehr zu verbergen, als dass der Benutzer ihn nicht in die URL eingeben muss. Ist das irgendwo eine Apache-Konfigurationseinstellung? Sollte ich httpd.config, container config oder anderswo suchen? Es ist ein virtueller Host auf dem Apache-Server. Anregungen sind willkommen.

Bearbeiten - Die funktionierenden virtuellen Host-Blöcke in virtualhosts.conf sehen folgendermaßen aus:

In der Nähe des Starts haben die virtuellen Host-Einträge folgenden Namen:

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

Der folgende Arbeitsblock für die http-Version sieht folgendermaßen aus:

<VirtualHost *:710>
     ServerName webdev.url.com
     ServerAdmin [email protected]

     # Comment out when OC4J instance is down for maintenance:
     <IfModule mod_oc4j.c>
         Oc4jMount 
     </IfModule>

     # 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]

     <IfModule mod_dir.c>
         DirectoryIndex index.jsp
     </IfModule>
         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


     <Location "/pls/dev">
         Order deny,allow
         Deny from all
         Allow from ####internal ip addresses####
     </Location>

 </VirtualHost>

Der neue Port, für den der Port angegeben werden muss, sieht folgendermaßen aus:

## - for Mobile 
 <VirtualHost *:770>
     ServerName mdev.url.com
     ServerAdmin [email protected]

     # Comment out when OC4J instance is down for maintenance:
     <IfModule mod_oc4j.c>
         Oc4jMount / msitedev
     </IfModule>

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

     <IfModule mod_dir.c>
         DirectoryIndex m.jsp
     </IfModule>

     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


    # <Location "/org/dev">
    #     Order deny,allow
    #     Deny from all
    #     Allow from ####
    # </Location>


 </VirtualHost>

Wiederum versuche ich nur herauszufinden, ob hier etwas die Notwendigkeit unterdrückt, die Port-Nr. (Z. B. 710) in die URL einzugeben. Bei der Untersuchung scheint es nirgendwo htaccess-Dateien zu geben.

6
Dallas

Hier ist das Handbuch für DNS-SRV-Einträge (RFC 2782) , mit dem Sie den Standardport so ändern können, dass er mit dem übereinstimmt, was Sie tatsächlich verwenden:

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

wo vorletztes Feld ist der Port, der einen beliebigen Wert haben kann. DNS-SRV-Einträge können den Standard-HTTP-Port für die Domäne oder nur für (einige) Hosts innerhalb der Domäne neu definieren

5
Lazy Badger

Wenn Sie die URL in einen Webbrowser eingeben, http://www.foo.com, wird immer versucht, eine Verbindung über Port 80 herzustellen.

Es ist nicht so sehr, dass der Port versteckt ist , sondern dass er angenommen ist , da Port 80 der Standard für HTTP ist Anfragen.

Wenn Sie zu https://www.foo.com navigieren, wird immer versucht, eine Verbindung über Port 443 herzustellen, es sei denn, Sie geben einen anderen Port an (https://www.foo.com:8080). Port 443 ist der Standardport für SSL/TLS-Anforderungen.

Sofern Sie keinen zwingenden Grund haben (z. B. wenn Sie 2 Webservices (z. B. Apache und IIS) gleichzeitig auf dem Computer ausführen), ist es möglicherweise am besten, einfach Ihren neuen virtuellen Host auf Port 80 zu ändern. Ich habe am SO gesehen, dass Sie eine ähnliche Frage gestellt haben. Wenn Sie versuchen, mobile Clients auf eine andere Site (oder beispielsweise Ihre App) umzuleiten, können Sie user mod_rewrite basierend auf dem Benutzeragenten verwenden.

Zum Beispiel:

<VirtualHost *:80>
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]

</VirtualHost>

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

Es ist spät und das oben Genannte ist möglicherweise ein bisschen verkehrt - wenn dies für Sie hilfreich ist, kann es möglicherweise jemand ändern, um es korrekter zu machen.

15
Nathan

Das HTTP-Protokoll verwendet standardmäßig Port 80. Wenn Sie Ihren Webserver für die Verwendung eines nicht standardmäßigen Ports konfigurieren, muss der Port in der URL angegeben werden. Es gibt keine Möglichkeit, das zu verbergen.

In Apache können Sie den Abhörport in httpd.conf einstellen, z.

Listen 127.0.0.1:80

Dies kann jedoch in der vhost-Konfiguration überschrieben werden, z.

<VirtualHost *:80>
3
Lèse majesté

Mir ist erst jetzt klar, dass ich nie die spezifische Antwort auf mein Problem gepostet habe.

Am Ende mussten wir Details zu webcache.xml hinzufügen, damit die URL ohne einen in der URL angegebenen Port funktioniert.

1
Dallas