Comment redirect les requêtes sur IP vers le domaine

De temps en temps, quelqu’un essaie d’accéder à notre site Web via l’adresse IP publique au lieu de l’un de nos domaines (oui, nous avons plusieurs domaines spécifiques à un pays .dk, .it, .es, etc. “).

Maintenant, je voudrais redirect ces requêtes qui arrivent sur l’adresse IP vers notre domaine www.domain.com. Comment pourrais-je faire cela dans nginx sans rien toucher MAIS les demandes allant directement à l’IP?

Voici mon nginx.conf

upstream unicorn { server unix:/tmp/unicorn.mysite.sock fail_timeout=0; } server { listen 80 default deferred; root /home/deployer/apps/mysite/current/public; proxy_set_header X-Request-Start "t=${msec}"; if (-f $document_root/system/maintenance.html) { return 503; } error_page 503 @maintenance; location @maintenance { rewrite ^(.*)$ /system/maintenance.html last; break; } location ~ ^/assets/ { gzip_static on; expires max; add_header Cache-Control public; } try_files $uri/index.html $uri @unicorn; location @unicorn { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://unicorn; } error_page 500 502 503 504 /500.html; client_max_body_size 4G; keepalive_timeout 10; } 

Donc, la question serait, comment puis-je modifier cela pour redirect, par exemple http://123.123.123.123/some_page à http://www.mysite.com/some_page mais laisser tout autre comme http://www.mysite.dk/some_page inchangé?

Vous pouvez configurer un serveur catchall avec les directives suivantes:

 listen 80 default_server; server_name _; 

Si vous avez plusieurs strophes de serveur, vous pouvez utiliser default_server pour spécifier la configuration utilisée si le nom d’hôte ne correspond à aucune des autres entrées server_name . L’utilisation d’un numéro ip correspond à ce scénario. Le server_name _; line agit comme une entrée null server_name .

Il est également utile si l’un de vos serveurs possède plusieurs noms de domaine.