2017-07-05 1 views
0

J'ai une application hébergée dans tomcat sous le port 8050; mydomain:8050. Maintenant, je veux avoir une URL conviviale, disons mydomain.com à utiliser pour accéder à mydomain:8050 sans que le client voit le numéro de port dans l'URL. Client devrait toujours voir mydomain.com qui devrait être résolu en interne à mydomain:8050.Réécriture vers un autre serveur

J'ai un serveur IIS fonctionnant sur le port 80. J'ai créé un site dedans juste pour utiliser l'option de réécriture qui peut résoudre à mydomain:8050. Il ne fonctionne pas avec le motif je

Motif:((?:[^\/\n]|\/\/)+)(.*) URL Rewrite:{R:1}:8050{R:2}

J'installé le serveur http apache sur le port 90. redirection utilisé dans le site IIS pour rediriger l'URL vers mydomain:90$S$Q, puis utilisé réécrire dans Apache pour rediriger en interne à mydomain:8050. Cela fonctionne quand j'ai une chaîne de requête, comme mydomain.com/queryString, mais ne fonctionne pas si je tape seulement mydomain.com. Je peux le voir rediriger vers mydomain:90 et s'arrête là sans qu'aucune règle de réécriture ne soit exécutée. Cela modifie également l'URL à mydomain:90 et est visible pour le client.

Mon exigence est que lorsque l'utilisateur entre mydomain.com il doit résoudre en interne à mydomain:8050 (avec chaîne de requête le cas échéant) sans le client le voir. J'ai IIS en cours d'exécution au port 80 et Apache en cours d'exécution sur le port 90. Comment puis-je y parvenir? Je suis sûr que ceci peut être manipulé dans la règle de réécriture d'IIS, mais je ne suis pas sûr comment faire cela.

Répondre

1

La réécriture sur un autre serveur est essentiellement un proxy. Ce que nous avons besoin est une configuration de proxy inverse dans IIS qui essentiellement proxy toutes vos demandes de http://example.com à de http://example:8050/(or mieux http://localhost:8050)

  • Assurez-vous que vous avez le module ARR installé sur IIS
  • Créer un revers règle proxy comme celui-ci
<rule name="ReverseProxyInboundRule1" stopProcessing="true"> 
    <match url="(.*)" /> 
    <conditions> 
    <add input="{CACHE_URL}" pattern="^(https?)://" /> 
    </conditions> 
    <action type="Rewrite" url="{C:1}://mydomain:8050/{R:1}" /> 
</rule> 

Veuillez noter qu'étant donné que Apcahe et IIS se trouvent sur le même serveur, vous pouvez utiliser localhost: 8050 comme proxy backend.

EDIT:

Aussi, si vous avez des rediriger revenant du proxy serveur et vous ne voulez pas rediriger l'en-tête de localisation à venir, vous pouvez le faire en décochant « rewritehost inverse des en-têtes de réponse » dans la demande de demande de routage

  • Sélectionnez le nœud du serveur IIS dans le gestionnaire
  • Aller à l'application Demande de routage Cache
  • Cl ick sur les paramètres du proxy serveur
  • décocher "rewritehost inverse des en-têtes de réponse"

Reverse rewrite host in response headers

+0

J'ai essayé, mais je ne vois pas la réécriture de 'mondomaine: 8050'. Il donne une erreur lors de l'accès 'mydomain.com' – Maz

+0

quelle erreur donne-t-il? Avez-vous installé ARR, sans que cela ne fonctionne pas –

+0

Désolé, j'ai manqué de ARR. Comment puis-je vérifier s'il est installé? Je suis assez nouveau à IIS. – Maz