Ana içeriğe atla

nginx kullanıcıları için faydalı bir döküman


Birden fazla bölgede sunucuları olan nginx kullanıcıları için;


https://www.digitalocean.com/community/tutorials/how-to-use-nginx-as-a-global-traffic-director-on-debian-or-ubuntu


To complete this guide, you will need a user with sudo privileges.
 You also need to know how to create servers in different regions.
Assumptions

This article makes a few assumptions for ease of readability.
Your domain is www.example.com
Your primary server is in the US
You want to install a GTD for Europe and Asia
Your server IPs are as follows: US: 1.1.1.1 EU: 1.1.1.2 AS: 1.1.1.3
Subdomains and DNS configuration

Choosing subdomains is all up to you. For this tutorial, let's use eu.example.com for Europe and as.example.com for Asia.

For each of those subdomains, add an A record in your DNS configuration with the IP of the server for that region:
eu.example.com - 1.1.1.2
as.example.com - 1.1.1.3

It should look something like this:


Install Nginx and GeoIP

To have Nginx with a GeoIP module, you have two options: 1) use a precompiled package (only -full and -extra have GeoIP module) or 2) compile your nginx with the --with-http_geoip_module configuration parameter – In this case, you also need geoip-dev libraries.

Let's use the already available repository packages.
sudo apt-get update
sudo apt-get install nginx-full geoip-database

Now both Nginx and GeoIP binaries are available. But there is one more thing: GeoIP's city database includes region information. You need to download and install it manually.
wget -N http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz
mv GeoLiteCity.dat /usr/share/GeoIP/
Configure Nginx and your virtual host

Here we are going to tell Nginx where the GeoIP database files are. And in our virtual host, we are going to configure how Nginx will respond to requests based on their geoip information.

Open nginx.conf (default /etc/nginx/nginx.conf) with your preferred editor. Add the line geoip_city /usr/share/GeoIP/GeoLiteCity.dat;. Your nginx.conf will look like this:
http {
  geoip_city /usr/share/GeoIP/GeoLiteCity.dat;
  ...
}

Save it.

Now let's edit your virtual host (default /etc/nginx/sites-available/default). Inside we need to create a map and add the subdomains to the server_name directive.

The map in Nginx allows us to set a variable $closest_server based on the value of $geoip_city_continent_code. You can read more about the Map module on Nginx's documentation.
map $geoip_city_continent_code $closest_server {
  default www.example.com;
  EU      eu.example.com;
  AS      as.example.com;
}

Next we add the location-based subdomains to the $server_name directive:
server {
  server_name example.com
              www.example.com
              eu.example.com
              as.example.com;
  ...
}

The last part of the process is to make a condition in your virtual host that redirects visitors to the closest server. Add the following condition to your configuration:
server {
  ...

  if ($closest_server != $host) {
    rewrite ^ $scheme://$closest_server$request_uri break;
  }

  ...
}

After you're done with all the changes your virtual host file would look like this:
map $geoip_city_continent_code $closest_server {
  default www.example.com;
  EU      eu.example.com;
  AS      as.example.com;
}

server {
  server_name example.com
              www.example.com
              eu.example.com
              as.example.com;

  if ($closest_server != $host) {
    rewrite ^ $scheme://$closest_server$request_uri break;
  }

  ...
}

Repeat this step for each server you want to configure. That way all of your servers will act as a traffic directors.
Run a few tests

After completing all of these steps, the final one is to test what you have done. When working with Nginx, always test new configurations before applying.

Nginx provides an option to test its configuration files, without affecting currently running Nginx. You can do that by running one of these commands:

nginx -t, service nginx configtest or /etc/init.d/nginx configtest

If everything is good - Reload your Nginx configuration:

nginx -s reload, service nginx reload or /etc/init.d/nginx reload

To see your traffic director in action. Open a browser and visit www.example.com:

If you visit the site using a proxy in Europe, you should be redirected to eu.example.com:

If you visit the site using a proxy in Asia, you should be redirected to as.example.com:

And from now on your global visitors will be immediately redirected to a server closest to them, improving their experience on your website.
Submitted by: Alex Soban
Related Tutorials
Docker Explained: Using Dockerfiles to Automate Building of Images
How To Install Drupal with Nginx on an Ubuntu 13.04 VPS
How To Configure OCSP Stapling on Apache and Nginx
How To Use the DigitalOcean One-Click Install Redmine on Ubuntu 14.04 Image
How To Install gpEasy CMS with NGINX and PHP5-FPM on Debian 7


Yorumlar

Bu blogdaki popüler yayınlar

ttnet tilgin hg1332 modem(router) kablosuz özelliğini güçlendirmek

Bu gün ttnetin hediyesi olan tilgin yönlendiriciyle biraz oynayayım dedim Matkap, ve rg316-rp-sma kablo alıp cihazın kapağını tekrar açtım. Matkapla usb çıkışın yanına bir delik açarak kaployu taktım. Sonra elimdeki antenlerden ikiti tanesini takıp test ettim. . Bu iki antenin, gözle farkedilir derecede sinyalleri kuvvetlendirdiğini fark ettim.. Normalde bu cihaz ile evin iki en uc noktaları arasında haberleşme olmaz iken şimdi en kör iki uç arasında sorun olmadan kablosuz kullanılabildiğini gördüm. Arada 4 tane kuvvetli beton duvar mevcut. Deneme bitti, tilgin rafa kalktı yine. Her nekadar ben bu cihazı kaldırsamda, kullanmak zorunda olan arkadaşlar, bir kablo ve ikitane anten takarak her herde kullanabilirler. İyi eğlenceler.

docker servisi proxy ayarı

  /etc/systemd/system/docker.service.d/http-proxy.conf   [Service] Environment="HTTP_PROXY= http://10.27.152.40:8080" Environment="HTTPS_PROXY= http://10.27.152.40:8080" # systemctl daemon-reload # systemctl restart docker # systemctl show --property=Environment docker

internet servis sağlayıcıları gerçekten tam bir servis sağlıyor mu?

 Bu ay taşındıktan sonra eski evde kullandığımız süperonline kullanmaya devam edeyim dedim ve bin pişman oldum. Eski evde süperonline dinamek gerçek ip adresi ile hizmet verirken, yeni yerde cgnat-sanal ip adresi ile hizmet vermeye başlamışlar. Sözde biz kullanıcıların menfaite olan bu davranış, aslında biz kullanıcıların zararına, superonline kullanıcı başına aylık ortalama +2$ kar sağlamasına yarıyor. Çünkü gerçek ip adresinin maliyeti ortalama $2 :-) Gerçek dinamik ip adresi vermemeleri, statik ip adresi kullanmaya zorlamalarından dolayı süperonline aboneliğim 15 gün sürdü. 15 Gün sürmesinin nedenide süperonline beni yanıltması, gerçek cevabı geciktirmesi. Çünkü bir hizmet ve ürün alımında ilk 14 gün neden göstermeksizin anlaşmadan vaz geçilebiliyor!!! Kişisel tecrübemle Türkcell Süperonline   dan kesinlikle bir daha hizmet almam, kimseyede tavsiye etmem.  Umarım gelecekte süperonline müşterilerine karşı açık ve net bilgi verir, müşteri odaklı bir şirket olur....