web-dev-qa-db-fra.com

Le moyen le plus transparent de diriger le port 80 et de autoredirect vers https avec Apache

Je travaille avec un serveur domestique et mon FAI bloque le port 80. Le DD-WRT est configuré sur mon routeur pour pouvoir rediriger d'autres ports ouverts (tels que 443 et 8080) sur le serveur. J'ai également un DNS dynamique configuré sur un enregistrement A mis à jour automatiquement via NameCheap.

Mon objectif final est le suivant: un utilisateur accède à http: /dev.homeserver.com et obtient automatiquement https://dev.homeserver.com sans aucun port personnalisé dans la barre d’adresse. Je veux autoredirect à https parce que je pense que le cryptage est important et que https devrait être partout. De plus, j'aimerais pouvoir rediriger http: /homeserver.com vers https://homeserver.com et toutes les demandes telles que http: /homserver.com/blah/this/index. php? être automatiquement redirigé vers https: //homserver.com/blah/this/index.php ?, etc.

Le problème est que pour pouvoir envoyer des utilisateurs au serveur via notre domaine (par exemple, dev.homeserver.com), je dois les rediriger vers un port autre que 80 pour accéder au serveur. En ce moment, je le fais via une redirection URL bon marché qui prend l'hôte dev et le redirige vers http: /dev.homeserver.com: 8080. Cela fonctionne, mais le problème est que le port apparaît dans l'URL, ce que j'aimerais éviter. Je peux activer le masquage d'URL, mais la barre d'adresse indique toujours dev.homeserver.com, ce qui peut être gênant puisque mes collègues et moi-même copions généralement la barre addy lors du test de PHP et de son codage.

Je vois que non-ip a un moyen de faire cela avec ce qu'ils appellent une redirection du port 80: , mais cela ressemble à une transmission vers une adresse IP et perd le nom DNS dans la barre d'adresse dès que le site répond.

J'ai également un VPS avec le port 80 ouvert et j'ai lu un peu sur ProxyPass, mais je veux éviter de créer des dépendances entre le serveur domestique et le VPS. Néanmoins, j'aimerais savoir si cela pourrait être une option si c'est le seul moyen d'avancer.

(je devais me débarrasser d'un/dans les liens car cela ne me permet pas de poster des URL avec ma réputation actuelle)

1
montag

En fait, c'était tout à fait possible (et totalement gratuit) avec beaucoup de piratage et d'essais et erreurs. J'ai mis en place un proxy inverse sur un VPS, ce qui a bien fonctionné, mais je n’aimais toujours pas la dépendance qu’il créait sur le VPS (étant donné que les deux serveurs que j’ai utilisent font des choses totalement indépendantes).

J'ai d'abord essayé CloudFlare et son moteur de réécriture d'URL avancé, et il était capable de réécrire les demandes d'URL de 80 () http) à 443 (HTTPS). Le problème est qu’il essaie de communiquer avec l’enregistrement A sur le port 80 (voir https://www.lowendtalk.com/discussion/50106/cloudflare-proxy-Origin-other-than-port-8 =). En outre, la version gratuite de CloudFlare ne vous accorde que cinq options DNS avancées au total. J'ai environ 8 sous-domaines, donc cela ne fonctionnerait pas non plus.

Il m'est arrivé de bidouiller mon domaine Namecheap et de réaliser que les paramètres DNS offraient une réécriture d'URL. J'ai donc essayé de rediriger sub.example.com vers https://sub.example.com . Je n'ai pas reçu de message d'erreur instantanément, ce qui est arrivé avec dynu.com et fear.com. Ceux-ci ne vous laisseront pas sauver cette config. En fait, peur vous dit que ce n'est pas possible car cela créerait une "boucle infinie", ce qui est vrai dans une certaine mesure parce que l'enregistrement A (ou l'enregistrement CNAME) est techniquement ambigu à l'URL à réécrire.

Quelque chose avec Namecheap (le disque dynamique spécial A +, peut-être?) Vous permet de faire ce genre de redirection. Je n'ai rien trouvé dans leur documentation qui mentionne cela. La chose intéressante est que traceroute à votre dossier de DNS ne vous mène nulle part, et si vous cinglez votre nom de DNS, il ne te donnera pas votre IP de serveur, mais à la place un IP de serveur de Namecheap, ainsi je pense que ce doit être une sorte d'inverse configuration du proxy sur leur fin. Gardez cela à l'esprit si vous voulez faire quelque chose comme WoL (vous aurez besoin d'un enregistrement A séparé). Jusqu'à présent, je n'ai rencontré aucun problème.

Quoi qu'il en soit, Namecheap offre des services de gestion DNS gratuits. J'ai donc saisi cette information, mis en place DNS-O-MATIC et hébergé chez moi un site parfaitement fonctionnel. Désormais, chaque visiteur qui tente d'accéder à l'adresse http: /sub.example.com/xyz est toujours redirigé vers https: /sub.example.com/xyz de manière totalement transparente et sans erreur de port dans l'URL. Les ports semblent mineurs, mais si je donne un lien à quelqu'un verbalement, c'est beaucoup plus facile.

En espérant que cela évite à quelqu'un d’autre de passer autant de temps que j’ai consacré à cela.

UPDATE:

La solution namecheap ne fonctionne plus. Je crois qu’ils ont appliqué un correctif ou modifié les règles de réécriture au cours des six derniers mois, ce qui n’autorise plus cette configuration en raison de conflits de réécriture d’enregistrements/d’URL similaires à ceux des autres fournisseurs DNS. J'ai abandonné tout espoir - pour le moment, il n'y a pas de solution gratuite disponible sans implémentation de proxy inverse ou jusqu'à ce que CloudFlare vous autorise à spécifier un port autre que 80.

Si vous connaissez un fournisseur DNS avancé qui peut faire ce que namecheap faisait, merci de me le faire savoir.

Pour les personnes intéressées, il existe un article intéressant sur la création d'un proxy inverse gratuitement à l'aide d'un essai gratuit Azure Web Apps, mais il semble qu'il existe un quota de 165 Mo par jour. Néanmoins, pour la plupart des gens, cela fonctionnerait. Le lien vers cet article est dans mon commentaire ci-dessous car je n'ai pas assez de réputation pour poster.

1
montag

Si vous utilisez Cloudflare, leur règles de page vous permettra de configurer des redirections comme celle-ci. Assurez-vous de régler SSL sur "Complet" sous l'onglet Crypto pour qu'il se connecte également à votre serveur via HTTPS.

Cloudflare, their [Page Rules

Vous aurez besoin d'utiliser leur DNS, mais cela facilite beaucoup la gestion de ce genre de choses. De plus, cela réduit le stress sur votre serveur domestique.

2
Andrew Lott