# Webserver

# Nützliche NGINX-Snippets

#### Unliebsame Crawler ärgern

```Nginx
if (!empty($_SERVER['HTTP_USER_AGENT'])) {
	if (preg_match("/Wget/", $_SERVER['HTTP_USER_AGENT'])) {
		header("Location: ftp://speedtest.tele2.net/1000GB.zip", true, 302);
		exit;
	}
}
```

#### Einzelne IP Adressen oder gesamte Netzbereiche aussperren (und Ärgern ( ͡° ͜ʖ ͡°))

```Nginx
# Dieses ganz oben in die jeweilige Konfigurationsdatei unter /etc/nginx/sites-available einfügen - IP Adresse(n) in CIDR Notation angeben
geo $bad_user {
        default 0;
        xx.xx.xx.xx/32 1;
        xx.xx.xx.0/24 1;
}

# Dann im server - Block dieses einfügen, das Rewrite-Ziel kann nach Belieben verändert werden
        if ($bad_user) {
                rewrite ^ https://www.youtube.com/watch?v=oHg5SJYRHA0;
        }
```

# Laravel - Webseiten in einem Unterverzeichnis bereitstellen

Dazu bedienen wir uns des folgenden Config-Blocks

```Nginx
location ^~ /laravel {
    alias /var/www/laravel/public;
    try_files $uri $uri/ @laravel;

    location ~ \.php {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        include /etc/nginx/fastcgi_params;
    }
}

location @laravel {
    rewrite /laravel/(.*)$ /laravel/index.php?/$1 last;
}
```

<p class="callout warning">Die Pfade zum PHP Socket müssen an die jeweiligen Gegebenheiten angepasst werden, aktuell wäre dies auf einem Ubuntu / Debian System bspw. /var/run/php/php7.4-fpm.sock</p>