|
Rozmiar: 27699
Komentarz: + definiowanie i wykorzystanie zmiennych; aktualizacja ustawień opcji w pakiecie
|
Rozmiar: 30578
Komentarz: + kompresja
|
| Usunięcia zostały oznaczone w ten sposób. | Dodatki zostały oznaczone w ten sposób. |
| Linia 117: | Linia 117: |
| #tcp_nopush on; | tcp_nopush on; |
| Linia 120: | Linia 120: |
| output_buffers 2 128k; | output_buffers 2 1M; |
| Linia 125: | Linia 125: |
| keepalive_timeout 0; #keepalive_timeout 65; |
keepalive_timeout 75; |
| Linia 130: | Linia 129: |
| brotli_types text/css text/javascript text/mathml text/plain text/xml application/x-javascript application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml; | brotli_types text/css text/javascript text/mathml text/plain text/xml application/javascript application/x-javascript application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml; |
| Linia 135: | Linia 134: |
| gzip_comp_level 9; | gzip_comp_level 7; |
| Linia 138: | Linia 137: |
| gzip_types text/css text/javascript text/mathml text/plain text/xml application/x-javascript application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml; | gzip_types text/css text/javascript text/mathml text/plain text/xml application/javascript application/x-javascript application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml; |
| Linia 147: | Linia 146: |
| ssl_protocols TLSv1.2 TLSv1.1 TLSv1; | ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1; |
| Linia 190: | Linia 189: |
| root /var/www/htdocs/virtuls/crm.limesmp.pl/web; | root /var/www/htdocs/virtuls/crm.aqq.pl/web; |
| Linia 235: | Linia 234: |
| == Formaty logów == Sposoby na logowanie (''log_format'') muszą znaleźć się w sekcji ''http{}''. Oprócz podstawowego formatu (analogicznego do Apache), możliwe jest dołączanie innych formatów logów. Tak zdefiniowany format logów, można wykorzystać dla konfiguracji logów danego ''serwera wirtualnego). == Logowanie odpowiedzi POST == Korzystając z poniższego formatu logów: {{{#!highlight nginx numbers=off log_format postdata $request_body; }}} możliwe jest logowanie odpowiedzi POSTowych z przeglądarek z wykorzystaniem następującej konfiguracji: {{{#!highlight nginx numbers=off location = /wp-content/themes/hello-elementor/user_login_post.php { access_log /var/log/nginx/mojadomena/postdata.log postdata; include 022-wordpress-php-fastcgi.conf; } }}} |
|
| Linia 251: | Linia 267: |
| }}} == Konfiguracja accept_filter == Konfiguracja ''accept_filter'' jest wykonywana w dyrektywie ''listen'' dla danego serwera wirtualnego. W konfiguracji '''JEDNEGO i TYLKO JEDNEGO''' socketu możliwe jest zaznaczenie, że nginx ma pracować z tym filtrem: {{{#!highlight nginx numbers=off server { listen [::1]:443 http2 ssl accept_filter=dataready reuseport; # [...] } }}} == Ustawienie nagłówków expire == W celu optymalizacji potrzebnych zasobów do pobierania plików, należy dla wybranych plików ustawić czas przechowywania przez cache przeglądarki (nagłówek expire). W tym celu w sekcji ''http{}'' należy wykonać następującą konfigurację: {{{#!highlight nginx numbers=off # ustawienie nag/l/owk/ow Expire dla obiekt/ow statycznych # usprawnia to wydajno/s/c strony, pomaga r/ownie/z w SEO map $request_uri $expires { default off; ~*\.(?:rss|atom|html?)$ +1h; ~*\.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|mp4|ogg|ogv|webm|htc)$ +6M; ~*\.(?:pdf|svgz)$ +1M; ~*\.(?:css|js|woff|woff2|otf)$ +6M; ~*\.(?:css|js|woff|woff2|otf)\?.*$ +6M; } # to warto powt/orzy/c w ustawieniach danego serwera wirtualnego expires $expires; # [...] }}} == Kompresja plików == Analogicznie do ustawienia nagłówków ''expire'' zalecane jest wykonywanie kompresji serwowanych plików (brotli, gzip). nginx wspiera kompresję ''w locie'', niemniej nie jest ona zalecana (obciąża serwer), jak również może prowadzić do błędów dla POSTów. Najlepszym rozwiązaniem jest przeszukanie plików statycznych i wygenerowanie ich wersji skompresowanych, tak aby nginx mógł serwować pliki już spakowane (odpowiadają za to włączone opcje ''gzip_static'' oraz ''brotli_static''). W celu wykonania archiwów plików statycznych zalecane jest wykorzystanie poniższeog "skryptu": {{{#!highlight bash numbers=off find /var/www/htdocs/virtuals/__mojadomena.pl__/data -type f \( -name '*.js' -o -name '*.css' \) > /tmp/_mojadomena.pl.static.files for f in `cat /tmp/_mojadomena.pl.static.files`; do gzip -7 -c $f > ${f}.gz; brotli -7 -c $f > ${f}.br; done |
|
| Linia 350: | Linia 407: |
| ===== Konfiguracja WordPress ===== Plik zapisany w [[UniMaster|repozytorium konfiguracji]]. Poniżej przykład użycia zmiennych w konfiguracji: {{{#!highlight nginx numbers=off # [...] location ~ \.php$ { #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini fastcgi_pass unix:/var/run/php-fpm-$fpmuser.socket; fastcgi_param HTTPS $bsd_php_https_param; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PHP_ADMIN_VALUE display_errors=$bsd_php_ini_display_errors; # [...] } }}} |
|
| Linia 627: | Linia 669: |
== Konfiguracja dla Wordpress == Konfiguracja dla !Wordpress została umieszczone w [[UniMaster|repozytorium konfiguracji]] w postaci plików: * 022-wordpress-core.conf - konfiguracja bez względu na miejsce zainstalowania * 022-wordpress-php-fastcgi.conf - ustawienia fastcgi Więcej szczegółów jest opisane w [[WordPress|oddzielnej dokumentacji]]. |
|
| Linia 705: | Linia 754: |
= Odnośniki do dokumentacji = 1. <<Anchor(page1)>>[[CspReport|Ustawienie raportowania Content Security Policy]] |
Spis Treści
- Instalacja oraz konfiguracja nginx
- Obsługa PHP
-
Konfiguracja nginx.conf
- Sekcja globalna
- Zwiększenie parametrów związanych z server_name
- Konfiguracja protkołu HTTP(S)
- Formaty logów
- Logowanie odpowiedzi POST
- Konfiguracja http2
- Konfiguracja IPv6
- Konfiguracja accept_filter
- Ustawienie nagłówków expire
- Kompresja plików
- Konfiguracja wspólne
- Konfiguracja dla aplikacji webowych
- Kodowanie znaków
- Źródła w sieci internet
- Odnośniki do dokumentacji
Instalacja oraz konfiguracja nginx
/boot/loader.conf
Zgodnie z sugestiami calomel.org warto włączyć następujące moduły:
aio_load="YES"
accf_data_load="YES"
accf_http_load="YES"
Opcje konfiguracyjne
Opcji jest bardzo dużo. Na dzień 25.11.2019 zostały wybrane następujące:
OPTIONS_FILE_SET+=DSO
OPTIONS_FILE_SET+=FILE_AIO
OPTIONS_FILE_SET+=IPV6
OPTIONS_FILE_SET+=THREADS
OPTIONS_FILE_SET+=WWW
OPTIONS_FILE_SET+=HTTP
OPTIONS_FILE_SET+=HTTP_CACHE
OPTIONS_FILE_SET+=HTTP_DAV
OPTIONS_FILE_SET+=HTTP_GZIP_STATIC
OPTIONS_FILE_SET+=HTTP_MP4
OPTIONS_FILE_SET+=HTTP_REWRITE
OPTIONS_FILE_SET+=HTTP_SLICE
OPTIONS_FILE_SET+=HTTP_SLICE_AHEAD
OPTIONS_FILE_SET+=HTTP_SSL
OPTIONS_FILE_SET+=HTTP_STATUS
OPTIONS_FILE_SET+=HTTP_XSLT
OPTIONS_FILE_SET+=HTTPV2
OPTIONS_FILE_SET+=STREAM
OPTIONS_FILE_SET+=STREAM_SSL
OPTIONS_FILE_SET+=STREAM_SSL_PREREAD
OPTIONS_FILE_SET+=BROTLI
OPTIONS_FILE_SET+=CT
OPTIONS_FILE_SET+=HEADERS_MORE
OPTIONS_FILE_SET+=HTTP_ACCEPT_LANGUAGE
OPTIONS_FILE_SET+=HTTP_AUTH_DIGEST
OPTIONS_FILE_SET+=HTTP_AUTH_LDAP
OPTIONS_FILE_SET+=HTTP_AUTH_PAM
OPTIONS_FILE_SET+=HTTP_DAV_EXT
OPTIONS_FILE_SET+=HTTP_FANCYINDEX
OPTIONS_FILE_SET+=HTTP_JSON_STATUS
OPTIONS_FILE_SET+=HTTP_MP4_H264
OPTIONS_FILE_SET+=HTTP_UPLOAD
OPTIONS_FILE_SET+=HTTP_UPLOAD_PROGRESS
Obsługa PHP
Została opisana w oddzielnej dokumentacji.
Konfiguracja nginx.conf
Konfiguracja nginx.conf może być "rozbita" na wiele plików i poprzez mechanizm include dołączanana do głównego pliku konfiguracyjnego.
Inną dobrą zaletą konfiguracji jest możliwość wyciągnięcia wspólnych ustawień dla wszystkich serwerów wirtualnych do sekcji http (np. ustawienia dla szyfrowania HTTPS). Dzięki temu konfiguracja znacznie się upraszcza, jak również jest możliwe dość szybko zmienić ustawiania "globalnie".
Sekcja globalna
(Nazwa na wyrost
). Ustawienia globalne, to głównie dołączenie zewnętrznych modułów (plików umieszczonych w katalogu /usr/local/libexec/nginx/):
# --- ustawienia globalne ---------------------------------------------------
#
user www;
worker_processes 4;
# --- za/l/adowanie potrzebnych modu/l/ow ----
#
load_module "/usr/local/libexec/nginx/ngx_http_brotli_filter_module.so";
load_module "/usr/local/libexec/nginx/ngx_http_brotli_static_module.so";
error_log /var/log/nginx/global/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
Zwiększenie parametrów związanych z server_name
W przypadku konfiguracji wykorzystującej bardzo dużo wartości server_name należy ustawić parametry w sekcji http:
http {
# [...]
server_names_hash_max_size 1024;
server_names_hash_bucket_size 512;
# [...]
Konfiguracja protkołu HTTP(S)
Ustawienia dla protokołu http(s). Wspólne i globalne dla każdego serwera wirtualnego:
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/global/access.log main;
server_tokens off;
charset utf-8;
source_charset utf-8;
aio on;
sendfile off;
tcp_nopush on;
lingering_time 10s;
max_ranges 0;
output_buffers 2 1M;
postpone_output 0;
reset_timedout_connection on;
send_timeout 10s;
keepalive_timeout 75;
brotli on;
brotli_static on;
brotli_types text/css text/javascript text/mathml text/plain text/xml application/javascript application/x-javascript application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml;
gzip off;
gzip_static on;
gzip_buffers 256 8k;
gzip_comp_level 7;
gzip_http_version 1.0;
gzip_min_length 0;
gzip_types text/css text/javascript text/mathml text/plain text/xml application/javascript application/x-javascript application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml;
gzip_vary on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_ecdh_curve secp521r1:secp384r1;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1;
Konfiguracja przekierowania do https
server {
listen 10.2.2.XXX:80;
server_name www.mojadomena.pl;
location / {
return 301 https://$server_name$request_uri;
}
location /pma/ {
return 301 https://mgt.mojadomena.pl/pma/;
}
include 014-acmele.conf;
include 005-x-frame.conf;
}
Konfiguracja serwera HTTPS
Poniżej konfiguracja samego serwera https. Od razu dołączana jest konfiguracja dla obsługi certyfikatów Let's Encrypt:
server {
listen 10.2.2.239:443 ssl;
server_name crm.limesmp.pl;
ssl_certificate certs/www.mojadomena.pl.chained.pem;
ssl_certificate_key certs/www.mojadomena.pl.key;
ssl_dhparam certs/www.mojadomena.pl.2048.dh.pem;
# dla paneli, kt/ore maj/a by/c pomini/ete przez wyszukiwarki
add_header X-Robots-Tag none;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload";
add_header Public-Key-Pins 'pin-sha256="VZRoSKCpoY3HzxId7gGq25lX0sITzskJGKuwqDt/Sq8="; pin-sha256="kvC0r0fZ885Ojc2JkQLC8bFvZutAx5w2DgvVsE8LlMo="; max-age=2592000; includeSubdomains';
### add_header Content-Security-Policy-Report-Only "upgrade-insecure-requests; default-src https:; form-action https:; script-src 'self' 'unsafe-eval' 'unsafe-inline'; img-src 'self'; style-src 'self' 'unsafe-inline' font-src 'self' object-src 'none'; report-uri /cgi-bin/csp-report.cgi"
# logowanie
access_log /var/log/nginx/www.mojadomena.pl/access.log main;
error_log /var/log/nginx/www.mojadomena.pl/error.log;
root /var/www/htdocs/virtuls/crm.aqq.pl/web;
index app.php;
location / {
try_files $uri $uri/ /app.php$is_args$args;
}
# obs/luga Let's Encrypt dla protoko/lu bez szyfrowania
location /.well-known/ {}
location /pma/ {
return 301 https://ev.ath.pl/pma/;
}
error_page 404 /50x.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/www/nginx-dist;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm-www.socket;
fastcgi_param HTTPS on;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
include 000-cmsploit.conf;
include 004-pillaging-dvcs.conf;
include 005-x-frame.conf;
}
Formaty logów
Sposoby na logowanie (log_format) muszą znaleźć się w sekcji http{}. Oprócz podstawowego formatu (analogicznego do Apache), możliwe jest dołączanie innych formatów logów. Tak zdefiniowany format logów, można wykorzystać dla konfiguracji logów danego serwera wirtualnego).
Korzystając z poniższego formatu logów: możliwe jest logowanie odpowiedzi POSTowych z przeglądarek z wykorzystaniem następującej konfiguracji:
Protokół HTTP/2 nie jest domyślnie włączony. Nie ma możliwości również jego ustawienia w sekcji
Konfiguracja protokołu IPv6 jest wykonywana w dyrektywie
Konfiguracja
W celu optymalizacji potrzebnych zasobów do pobierania plików, należy dla wybranych plików ustawić czas przechowywania przez cache przeglądarki (nagłówek expire). W tym celu w sekcji
Analogicznie do ustawienia nagłówków Najlepszym rozwiązaniem jest przeszukanie plików statycznych i wygenerowanie ich wersji skompresowanych, tak aby nginx mógł serwować pliki już spakowane (odpowiadają za to włączone opcje W celu wykonania archiwów plików statycznych zalecane jest wykorzystanie poniższeog "skryptu":
Poniżej konfiguracje, które zostały umieszczone w repozytorium skryptów:
Konieczne jest uruchomienie php-fpmd analogicznie do fcgiwrapd. Poniższa konfiguracja jest dość generyczna. Ale nie ma możliwości jej
W celu włączenia obsługi
Analogicznie do ustawienia
Możliwe jest "
Obsługa skryptów CGI jest bardzo prosta. Należy zainstalować oraz uruchomić fcgiwrap. W konfiguracji nginx należy wykonać konfigurację:
W celu uruchamiania aplikacji napisanych w języku python wykorzystywany jest uWSGI. Po uruchomieniu aplikacji w samym uWSGI należy wykonać konfigurację w nginx. Najlepiej pokazuje to konfiguracja moinmoin.
W celu uruchomienia " A następnie dla danej
Domyślnie nie ma żadnych ograniczeń dla danego zasobu (
Rozbudowa uwierzytelniania (HTTP AUTH) w oparciu o certyfikat klienta. Klient powinien posiadać certyfikat wygenerowany jako Wykonanie
Konfiguracja mechanizmu WebDAV jest krótka i działa poprawnie dla prostej lokalizacji (bez wyrażeń regularnych dla
Należy się upewnić, że w opcjach nginx jest włączona obsługa WebDAV: Moduł
Konfiguracja pokazana na przykładzie (najbardziej opisywane rozwiązanie) publikacji kalendarzy dla programów pocztowych (MS Outlook, Thunderbird).
Całość została opisana w oddzielnej dokumentacji.
Dla wybranych aplikacji webowych czy też paneli administracyjnych zapisana jest dedykowana im konfiguracja.
Konfiguracja dla net-mgmt/nagios3 jest dość prosta. Sprowadza się do konfiguracji odpowiedniego
Dla sieci lokalnych bardzo przydatne jest wystawienia konfiguracji dla serwera proxy, czyli Web Proxy Auto Discovery (WPAD). Konfiguracja jest bardzo krótka, a jednocześnie bardzo elastyczna dla klienta końcowego:
Całość została opisane w oddzielnym dokumencie.
Całość została opisana w oddzielnej dokumentacji.
Całość została opisana w oddzielnej dokumentacji.
Konfiguracja dla Joomla 3.x wygląda następująco:
Konfiguracja dla Drupal-a została umieszczona w repozytorium konfiguracji w postaci plików: 006-drupal.conf - konfiguracja dla katalogu /usr/local/www/drupal7
Konfiguracja dla !Wordpress została umieszczone w repozytorium konfiguracji w postaci plików: Więcej szczegółów jest opisane w oddzielnej dokumentacji.
dspam posiada panel webowy napisany w PERL. Tak więc trzeba
nginx korzysta z kodowania Rozwiązaniem problemu jest utworzenie charset map, która mapuje znaki Mapa kodowania z
W celu skorzyania z mapy kodowania należy wykonać następującą konfigurację:
Kluczowy jest parametr fastcgi_index, który w niektórych przypadkach może być inny, aniżeli index.php. Odpowiednia konfiguracja została umieszczona w repozytorium konfiguracji i sprawdza się. (1) Do sprawdzenia, ponieważ dla przykładowej witryny powodowało to błędne działanie całej aplikacji webowej. (2)Logowanie odpowiedzi POST
log_format postdata $request_body;
location = /wp-content/themes/hello-elementor/user_login_post.php {
access_log /var/log/nginx/mojadomena/postdata.log postdata;
include 022-wordpress-php-fastcgi.conf;
}
Konfiguracja http2
server {
listen 11.22.33.44 ssl http2;
# [...]
}
Konfiguracja IPv6
server {
listen [::1]:80 ipv6only=off;
# [...]
}
Konfiguracja accept_filter
server {
listen [::1]:443 http2 ssl accept_filter=dataready reuseport;
# [...]
}
Ustawienie nagłówków expire
# ustawienie nag/l/owk/ow Expire dla obiekt/ow statycznych
# usprawnia to wydajno/s/c strony, pomaga r/ownie/z w SEO
map $request_uri $expires {
default off;
~*\.(?:rss|atom|html?)$ +1h;
~*\.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|mp4|ogg|ogv|webm|htc)$ +6M;
~*\.(?:pdf|svgz)$ +1M;
~*\.(?:css|js|woff|woff2|otf)$ +6M;
~*\.(?:css|js|woff|woff2|otf)\?.*$ +6M;
}
# to warto powt/orzy/c w ustawieniach danego serwera wirtualnego
expires $expires;
# [...]
Kompresja plików
find /var/www/htdocs/virtuals/__mojadomena.pl__/data -type f \( -name '*.js' -o -name '*.css' \) > /tmp/_mojadomena.pl.static.files
for f in `cat /tmp/_mojadomena.pl.static.files`; do gzip -7 -c $f > ${f}.gz; brotli -7 -c $f > ${f}.br; done
Konfiguracja wspólne
Obsługa plików .ht*
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
Obsługa PHP-FPM
włączania z oddzielnego pliku konfiguracyjnego1. Raczej ma zasadzie copy-paste: # pass the PHP scripts to FastCGI server via unix socket
#
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm-www.socket;
fastcgi_param HTTPS on;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.5:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
Właczenie short_open_tag w konkretnym serwerze (wirtualce)
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm-www.socket;
fastcgi_param PHP_ADMIN_VALUE short_open_tag=On;
# [...]
}
Inne ustawienia dla php w lokalizacji
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm-www.socket;
fastcgi_param PHP_ADMIN_VALUE open_basedir=/var/www/htdocs/virtuals/www.gdbd.pl/nowa-strona:/var/tmp:/usr/local/share/pear:/usr/local/share/phpmailer:/usr/local/share/adodb:/usr/local/share/smarty:/usr/local/share/fpdf:/usr/local/share/jpgraph;
fastcgi_param PHP_ADMIN_VALUE sys_temp_dir=/var/www/htdocs/virtuals/www.gdbd.pl/nowa-strona/tmp;
fastcgi_param PHP_ADMIN_VALUE upload_tmp_dir=/var/www/htdocs/virtuals/www.gdbd.pl/nowa-strona/tmp;
fastcgi_param PHP_ADMIN_VALUE session.save_path=/var/www/htdocs/virtuals/www.gdbd.pl/nowa-strona/tmp;
# [...]
}
Ustawienie wartości domyślnych wybranych zmiennych
Sekcja http (nginx.conf)
http {
# [...]
# ustawienie zmiennych (warto/sci domy/slnych)
map $host $fpmuser {
default www;
}
map $host $bsd_php_https_param {
default on;
}
map $host $bsd_php_ini_display_errors {
default off;
}
# [...]
}
Sekcja server (virtuals.serwer.conf)
server {
# [...]
set $fpmuser __fpm_user__;
set $bsd_php_ini_display_errors on;
include 022-wordpress-core.conf;
# [...]
}
Obsługa CGI
location ~ \.cgi$ {
try_files $uri =404;
gzip off;
#rewrite ^/cgi-bin/nagios/(.*)$ /nagios/$1;
fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param REMOTE_USER $remote_user;
}
Obsługa uWSGI
Nagłówki bezpieczeństwa dla HTTPS
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload";
FancyIndex
load_module "/usr/local/libexec/nginx/ngx_http_fancyindex_module.so";
location /pkg/data/ {
alias /pkg/data/logs/bulk/;
fancyindex on;
fancyindex_exact_size off;
}
http auth
location /nagios/ {
alias /usr/local/www/nagios/;
index index.php;
satisfy any;
allow 10.0.0.0/8;
allow 127.0.0.4;
deny all;
auth_basic "Special Area";
auth_basic_user_file /var/www/authdb/auth.db;
}
ssl verify client
ssl_client_certificate /etc/ssl/ca.crt.pem;
ssl_verify_client on;
ssl_verify_depth 10;
if ($ssl_client_verify != SUCCESS) { return 403; }
/C=PL/ST=mazowieckie/O=BSD Serwis Krzysztof Stryjek/OU=BSD Serwis HQ/CN=win10.wtp3.local/emailAddress=security@bsdserwis.com:xxj31ZMTZzkVA
WebDAV
Włączenie modułów
OPTIONS_FILE_SET+=HTTP_DAV
OPTIONS_FILE_SET+=HTTP_DAV_EXT
Konfiguracja dla wybranej lokalizacji
location /kalendarz/ {
alias /var/www/htdocs/virtuals/webdavcal/data/;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
dav_access user:rw group:rw all:r;
create_full_put_path on;
client_body_temp_path /var/www/htdocs/virtuals/webdavcal/tmp/;
client_max_body_size 100m;
limit_except GET {
auth_basic "Strefa chroniona kalendarzy";
auth_basic_user_file /var/www/htdocs/virtuals/webdavcal/authdb/davcal.db;
}
fancyindex on;
fancyindex_exact_size off;
}
Obsługa security.txt
Konfiguracja dla aplikacji webowych
Konfiguracja dla nagios3
location /nagios/ {
alias /usr/local/www/nagios/;
index index.php;
satisfy any;
allow 10.0.0.0/8;
allow 127.0.0.4;
deny all;
auth_basic "Athenasoft Special Area";
auth_basic_user_file /var/www/authdb/ccauth.db;
location ~ \.php$ {
fastcgi_pass unix:/var/run/phph-fpm.socket;
fastcgi_param HTTPS on;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
include expires.conf;
location ~ \.cgi$ {
try_files $uri =404;
gzip off;
#rewrite ^/cgi-bin/nagios/(.*)$ /nagios/$1;
fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param REMOTE_USER $remote_user;
}
}
Konfiguracja dla wpad.dat
# dodanie typu pliku (mime)
types {
application/x-ns-proxy-autoconfig dat;
}
server {
listen ip.ad.dre.ss:80;
server_name wpad.domain.local wpad w3c.domain.local;
access_log /var/log/nginx/wpad.domain.local/access.log;
error_log /var/log/nginx/wpad.domain.local/error.log;
root /var/www/htdocs/virtuals/wpad/data;
# je/zeli kto/s poprosi o domy/slny dokument, to przekierowania na wpad.dat
#
location / {
return 301 /wpad.dat;
}
# pr/oba zwr/ocenia pliku wpad.dat albo b/l/ad
#
location /wpad.dat {
try_files /wpad.dat =404;
}
}
DNS black holing
Konfiguracja dla mailman
Konfiguracja dla ownCloud
Konfiguracja dla Joomla
server {
# [...] ustawienia listen ,certyfikatów, logowania, itd.
# deny running scripts inside writable directories
location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
return 403;
}
location ~ \.xml$ {
return 403;
}
location / {
try_files $uri $uri/ /index.php?$args;
if ($request_uri ~ "^/(.*)(?<=/)index\.php/?((?<=/).*)?$") { return 301 /$1$2; }
if ($request_uri ~ "^/(.*)(?<=/)index\.php/?((?<=/).*)?$") { return 301 /$1$2; }
if ($query_string ~ "mosConfig_[a-zA-Z_]{1,21}(=|\%3D)"){ return 403; }
if ($query_string ~ "base64_encode.*\(.*\)"){ return 403; }
if ($query_string ~* "(\<|%3C).*script.*(\>|%3E)"){ return 403; }
if ($query_string ~ "GLOBALS(=|\[|\%[0-9A-Z]{0,2})"){ return 403; }
if ($query_string ~ "_REQUEST(=|\[|\%[0-9A-Z]{0,2})"){ return 403; }
}
location /administrator {
satisfy any;
allow 127.0.0.0/8;
allow __adres_ip__;
deny all;
auth_basic "Firma Security Team";
auth_basic_user_file /var/www/htdocs/virtuals/www.domain.tld/authdb/admin;
}
location ~ /component/users/ {
allow 127.0.0.0/8;
allow __adres_ip__;
deny all;
}
# pass the PHP scripts to FastCGI server listening on unix socket
#
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm-jjanusz.socket;
fastcgi_param HTTPS on;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED $document_root/$fastcgi_path_info;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
}
include 000-cmsploit.conf;
include 004-dot-ht.conf;
include 004-err-page-404.conf;
include 004-err-page-5xx.conf;
include 004-pillaging-dvcs.conf;
include 005-no-logging.conf;
include 015-csp-report.conf;
include expires.conf;
}
Konfiguracja dla drupal
Konfiguracja dla Wordpress
Konfiguracja dla dspam
location /dspam/ {
alias /usr/local/www/dspam/;
index index.html;
auth_basic "Dspam Control Center";
auth_basic_user_file /var/www/htdocs/virtuals/__SERVER_NAME__/authdb/dspamdb;
gzip off;
location ~ \.cgi$ {
fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock;
fastcgi_index dspam.cgi;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_pass_header Authorization;
fastcgi_intercept_errors off;
}
include expires.conf;
}
mod rewrite
TBA
Kodowanie znaków
charset_map iso-8859-2 utf-8 {
A0 C2A0 ; # no-break space
A1 C484 ; # latin capital letter A with ogonek
[...]
}
Zmiana kodowania
Sekcja http
http {
[...]
include charset-l2-utf8.conf;
[...]
}
Sekcja server
server {
[...]
source_charset iso-8859-2;
[...]
}
Źródła w sieci internet
Odnośniki do dokumentacji
(c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.
