Базовая настройка web-сервера Nginx

Установка и настройка Nginx.

Конфигурация сайта пользователя

  1. Создаем файл "dim.st":
    nano /etc/nginx/sites-available/dim.st
    Содержимое файла "dim.st" (с поддержкой SSL соединения):
    server {
      listen 80;
      listen [::]:80;
      server_name dim.st www.dim.st;
      return 301 https://$server_name$request_uri;
    }
    
    server {
      listen 443 ssl http2;
      listen [::]:443 ssl http2;
      server_name dim.st www.dim.st;
      root /home/dim/www/dim.st/;
     #access_log /home/dim/www/.sys/access_dim.st.log;
      error_log /home/dim/www/.sys/error_dim.st.log;
    
      ssl_certificate /etc/letsencrypt/live/dim.st/fullchain.pem;
      ssl_certificate_key /etc/letsencrypt/live/dim.st/privkey.pem;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      ssl_prefer_server_ciphers on;
      ssl_dhparam /etc/ssl/certs/dhparam.pem;
      # ssl_ciphers взять из /etc/letsencrypt/options-ssl-nginx.conf
      ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-SHA ECDHE-ECDSA-AES256-SHA ECDHE-ECDSA-AES128-SHA256 ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-SHA ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES256-SHA384 DHE-RSA-AES128-GCM-SHA256 DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES128-SHA DHE-RSA-AES256-SHA DHE-RSA-AES128-SHA256 DHE-RSA-AES256-SHA256 EDH-RSA-DES-CBC3-SHA";
      ssl_session_cache shared:le_nginx_SSL:1m;
      ssl_session_timeout 1440m;
      ssl_stapling on;
      ssl_stapling_verify on;
    
      add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";
      add_header Content-Security-Policy "default-src https:; script-src https: 'unsafe-eval' 'unsafe-inline'; style-src https: 'unsafe-inline'; img-src https: data:; font-src https: data:";
      add_header X-Frame-Options SAMEORIGIN;
      add_header X-XSS-Protection "1; mode=block";
      add_header X-Content-Type-Options nosniff;
    
      if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 444; }
      if ($host !~ ^(dim.st|www.dim.st)$ ) { return 444; }
      if ($host = 'www.dim.st' ) { rewrite ^(.*)$ https://dim.st$1  permanent; }
      if ($http_user_agent ~* "libwww-perl"){return 444;}
      if ($http_user_agent ~* "WebDAV"){return 444;}
      if ($http_host ~* "^188.226.150.107"){return 444;}
    
      gzip on;
      gzip_disable "msie6";
      gzip_comp_level 5;
      gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
    
      location ~ /.well-known {
        allow all;
      }
    
      location ~ \.php$ {
        try_files $uri = 404;
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php7.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      }
            
      #location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|bmp|swf|js|html|txt|ttf|woff)$
      #{
      #  expires max;
      #}
    }
  2. "Включаем" сайт "dim.st":
    ln -s /etc/nginx/sites-available/dim.st /etc/nginx/sites-enabled/dim.st

Конфигурация сайта, доступного по IP адресу

  1. Создаем файл "sys" с конфигурарацией сайта, доступного только по IP-адресу сервера:
    nano /etc/nginx/sites-available/sys
    Содержимое файла "sys":
    server {
      listen 80;
      server_name 188.226.150.107;
      root /var/www/;
     #access_log /var/www/access.log;
      error_log /var/www/error.log;
    
      location / {
        auth_basic "Access Denied";
        auth_basic_user_file /var/www/.pwd;
      }
      
      location ~ /\. {
        deny all;
      }
    
      location ~ \.php$ {
        try_files $uri = 404;
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php7.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      }
    }
  2. Доступ к сайту "sys" только по логину и паролю, которые будут храниться в файле "/var/www/.pwd". Создаём эту пару:
    printf "admin:`openssl passwd -apr1`\n" >> /var/www/.pwd
  3. "Включаем" сайт "sys":
    ln -s /etc/nginx/sites-available/sys /etc/nginx/sites-enabled/sys

Установка и настройка PHP 7 FastCGI

Описано тут. Либо PHP 5.


После установки PHP перезапускаем web-сервер Nginx:
service nginx restart
Проверяем:
echo -e "<?php phpinfo();?>" > /home/dim/www/dim.st/test.php
Открываем в браузере https://dim.st/test.php