Shell escape
shell escape…
Jak odpytać adresy url o status html z bash’a?
Po co to komu?
Ano po to, że unikamy doklejania ciastek (Same Origin Policy) do requestów o pliki statyczne, które w tym przypadku są całkowicie zbyteczną informacja przesyłaną w obydwie strony. Mniej danych, mniejszy ruch, więcej drzew.
A więc do dzieła…
Edytujemy /etc/nginx/avaliable-sites/<domena>.conf, lub inna lokalizacja w zależności od dystrybucji chodzi o konfigurację nginxa pod konkretną domenę.
server {
listen 80;
server_name static.<domena>;
access_log <logs_dir>static.<domena>.access.log;
error_log <logs_dir>static.<domena>.error.log;
more_set_headers 'Server: Static';
location / {
root <root_path>;
sendfile on;
sendfile_max_chunk 1m;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
expires max;
add_header Pragma public;
add_header Cache-Control "public";
location ~* \.(eot|ttf|woff|woff2)$ {
add_header Access-Control-Allow-Origin *;
}
}
}
Kilka słów wyjaśnienia konfiguracji:
OK, to w sumie możemy przetestować…
service nginx configtest service nginx reload
Bibliografia:
Ściągamy bazy danych krajów i miast
cd /etc/nginx/geoip wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz gunzip GeoIP.dat.gz wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz gunzip GeoLiteCity.dat.gz
Rekonfigurujemy Nginx’a
Edytujemy plik /etc/nginix/nginx.conf.
W sekcji http dodajemy poniższe linijki
#GeoIP geoip_country /etc/nginx/geoip/GeoIP.dat; # the country database geoip_city /etc/nginx/geoip/GeoLiteCity.dat; # the city database
Następnie deklarujemy zmienne dla php-fpm
Edytujemy plik /etc/nginx/fastcgi_params dodajemy poniższe linijki
### GEOIP Variables ### fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code; fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3; fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name; fastcgi_param GEOIP_CITY_COUNTRY_CODE $geoip_city_country_code; fastcgi_param GEOIP_CITY_COUNTRY_CODE3 $geoip_city_country_code3; fastcgi_param GEOIP_CITY_COUNTRY_NAME $geoip_city_country_name; fastcgi_param GEOIP_REGION $geoip_region; fastcgi_param GEOIP_CITY $geoip_city; fastcgi_param GEOIP_POSTAL_CODE $geoip_postal_code; fastcgi_param GEOIP_CITY_CONTINENT_CODE $geoip_city_continent_code; fastcgi_param GEOIP_LATITUDE $geoip_latitude; fastcgi_param GEOIP_LONGITUDE $geoip_longitude;
Sprawdzamy konfig
service nginx configtest
Przeładowania nginx’a
service nginx reload
Przydałoby się przetestować nową konfigurację. Tworzymy skrypt PHP np. o poniższej zawartości:
<html><body>
<?php
$keys = preg_filter('/^GEOIP(.*)/', '$0', array_keys( $_SERVER ));
foreach($keys as $key){
echo $key . ": ". getenv($key)."<br>";
}
?>
</body></html>
Wynik powinien wyglądać tak:
GEOIP_COUNTRY_CODE: PL GEOIP_COUNTRY_CODE3: POL GEOIP_COUNTRY_NAME: Poland GEOIP_CITY_COUNTRY_CODE: PL GEOIP_CITY_COUNTRY_CODE3: POL GEOIP_CITY_COUNTRY_NAME: Poland GEOIP_REGION: xxx GEOIP_CITY: xxx GEOIP_POSTAL_CODE: xxx GEOIP_CITY_CONTINENT_CODE: EU GEOIP_LATITUDE: xx.xxxx GEOIP_LONGITUDE: xx.xxxx
Tak:
curl -u <user>@<domain>:<password> --ssl pop3://<pop3_mail_server>:<pop3_port>/ -k | wc -l
Sposób rozwiązania problemu uruchomienia skryptu python jako usługi w systemie opartym na systemd (w tym przypadku Ubuntu 16.04LTS).