|
Rozmiar: 938
Komentarz: *** KREACJA ***
|
Rozmiar: 13435
Komentarz: + opis nginx.conf
|
| Usunięcia zostały oznaczone w ten sposób. | Dodatki zostały oznaczone w ten sposób. |
| Linia 4: | Linia 4: |
| <<TableOfContents()>> <<BR>> | <<TableOfContents()>><<Navigation(children)>> <<BR>> |
| Linia 10: | Linia 10: |
| {{{ | {{{#!highlight bash numbers=off |
| Linia 17: | Linia 17: |
| Opcji jest bardzo dużo. Na dzień '''02.09.2017''' zostały wybrane następujące: {{{#!highlight make numbers=off OPTIONS_FILE_SET+=DSO OPTIONS_FILE_SET+=FILE_AIO OPTIONS_FILE_SET+=IPV6 OPTIONS_FILE_SET+=HTTP OPTIONS_FILE_SET+=HTTP_CACHE OPTIONS_FILE_SET+=HTTP_GZIP_STATIC OPTIONS_FILE_SET+=HTTP_REWRITE OPTIONS_FILE_SET+=HTTP_SLICE OPTIONS_FILE_SET+=HTTP_SSL OPTIONS_FILE_SET+=HTTP_STATUS OPTIONS_FILE_SET+=HTTPV2 OPTIONS_FILE_SET+=STREAM OPTIONS_FILE_SET+=STREAM_SSL OPTIONS_FILE_SET+=STREAM_SSL_PREREAD OPTIONS_FILE_SET+=THREADS OPTIONS_FILE_SET+=WWW 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_JSON_STATUS OPTIONS_FILE_SET+=HTTP_UPLOAD OPTIONS_FILE_SET+=HTTP_UPLOAD_PROGRESS OPTIONS_FILE_SET+=BROTLI }}} |
|
| Linia 20: | Linia 46: |
| PHP (lang/php) powinno mieć wybrane następujące opcje: | PHP ([[FreshPorts:lang/php71|lang/php71]]) powinno mieć wybrane następujące opcje: |
| Linia 29: | Linia 55: |
| == Konfiguracja php.ini == {{{#!highlight ini numbers=off engine = On short_open_tag = Off precision = 14 output_buffering = 4096 zlib.output_compression = Off implicit_flush = Off unserialize_callback_func = serialize_precision = -1 disable_functions = disable_classes = zend.enable_gc = On expose_php = On max_execution_time = 30 max_input_time = 60 memory_limit = 128M error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT display_errors = Off display_startup_errors = Off log_errors = On log_errors_max_len = 1024 ignore_repeated_errors = Off ignore_repeated_source = Off report_memleaks = On track_errors = Off html_errors = On variables_order = "GPCS" request_order = "GP" register_argc_argv = Off auto_globals_jit = On post_max_size = 1048M auto_prepend_file = auto_append_file = default_mimetype = "text/html" default_charset = "UTF-8" doc_root = user_dir = enable_dl = Off file_uploads = On upload_tmp_dir = /var/tmp/www upload_max_filesize = 1035M max_file_uploads = 20 allow_url_fopen = On allow_url_include = Off default_socket_timeout = 60 [CLI Server] cli_server.color = On [Date] date.timezone = Europe/Warsaw [filter] [iconv] [intl] [sqlite3] [Pcre] [Pdo] [Pdo_mysql] pdo_mysql.cache_size = 2000 pdo_mysql.default_socket= [Phar] [mail function] SMTP = localhost smtp_port = 25 mail.add_x_header = On [SQL] sql.safe_mode = Off [ODBC] odbc.allow_persistent = On odbc.check_persistent = On odbc.max_persistent = -1 odbc.max_links = -1 odbc.defaultlrl = 4096 odbc.defaultbinmode = 1 [Interbase] ibase.allow_persistent = 1 ibase.max_persistent = -1 ibase.max_links = -1 ibase.timestampformat = "%Y-%m-%d %H:%M:%S" ibase.dateformat = "%Y-%m-%d" ibase.timeformat = "%H:%M:%S" [MySQLi] mysqli.max_persistent = -1 mysqli.allow_persistent = On mysqli.max_links = -1 mysqli.cache_size = 2000 mysqli.default_port = 3306 mysqli.default_socket = mysqli.default_host = mysqli.default_user = mysqli.default_pw = mysqli.reconnect = Off [mysqlnd] mysqlnd.collect_statistics = On mysqlnd.collect_memory_statistics = Off [OCI8] [PostgreSQL] pgsql.allow_persistent = On pgsql.auto_reset_persistent = Off pgsql.max_persistent = -1 pgsql.max_links = -1 pgsql.ignore_notice = 0 pgsql.log_notice = 0 [bcmath] bcmath.scale = 0 [browscap] [Session] session.save_handler = files session.use_strict_mode = 0 session.use_cookies = 1 session.use_only_cookies = 1 session.name = PHPSESSID session.auto_start = 0 session.cookie_lifetime = 0 session.cookie_path = / session.cookie_domain = session.cookie_httponly = session.serialize_handler = php session.gc_probability = 1 session.gc_divisor = 1000 session.gc_maxlifetime = 1440 session.referer_check = session.cache_limiter = nocache session.cache_expire = 180 session.use_trans_sid = 0 session.sid_length = 26 session.trans_sid_tags = "a=href,area=href,frame=src,form=" session.sid_bits_per_character = 5 session.save_path = "/var/tmp/www" [Assertion] zend.assertions = -1 [COM] [mbstring] [gd] [exif] [Tidy] tidy.clean_output = Off [soap] soap.wsdl_cache_enabled=1 soap.wsdl_cache_dir="/tmp" soap.wsdl_cache_ttl=86400 soap.wsdl_cache_limit = 5 [sysvshm] [ldap] ldap.max_links = -1 [mcrypt] [dba] [opcache] [curl] [openssl] openssl.capath = /etc/ssl ; Local Variables: ; tab-width: 4 ; End: }}} == Konfiguracja php-fpm.conf == {{{#!highlight ini numbers=off [global] pid = run/php-fpm.pid syslog.facility = daemon syslog.ident = php-fpm log_level = notice emergency_restart_threshold = 0 process.max = 128 daemonize = yes include=/usr/local/etc/php-fpm.d/*.conf }}} === Konfiguracja etc/php-fpm.d/www.conf === {{{#!highlight ini numbers=off [www] user = www group = www listen = 127.0.0.1:9000 listen.backlog = -1 listen.allowed_clients = 127.0.0.1 pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 pm.process_idle_timeout = 10s; pm.max_requests = 500 security.limit_extensions = .php .php3 .php4 .php5 .php7 env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /var/tmp/www env[TMPDIR] = /var/tmp/www env[TEMP] = /var/tmp/www }}} == Uruchomienie php-fpm == W skryptach startowych (`/etc/rc.conf` lub `/etc/rc.conf.d/php_fpm`) należy ustawić: {{{#!highlight bash numbers=off php_fpm_enable="YES" }}} A następnie uruchomić demon: {{{#!highlight bash numbers=off service php-fpm start }}} = 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/`): {{{#!highlight nginx numbers=off # --- 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; } }}} == Konfiguracja protkołu HTTP(S) == Ustawienia dla protokołu http(s). Wspólne i globalne dla każdego serwera wirtualnego: {{{#!highlight nginx numbers=off 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 128k; postpone_output 0; reset_timedout_connection on; send_timeout 10s; keepalive_timeout 0; #keepalive_timeout 65; brotli on; brotli_static on; 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; gzip off; gzip_static on; gzip_buffers 256 8k; gzip_comp_level 9; gzip_http_version 1.0; gzip_min_length 0; 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_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.2 TLSv1.1 TLSv1; }}} === Konfiguracja przekierowania do https === {{{#!highlight nginx numbers=off 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 [[LetsEncrypt|Let's Encrypt]]: {{{#!highlight nginx numbers=off 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; 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; location / { root /var/www/htdocs/virtuls/www.mojadomena.pl/data; index index.html index.htm; } # 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$ { root html; fastcgi_pass 127.0.0.5:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$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; } }}} == Konfiguracja wspólne == Poniżej konfiguracje, które warto umieścić w [[UniMaster|repozytorium skryptów]]: === Obsługa plików .ht* === {{{#!highlight nginx numbers=off # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } }}} === Obsługa PHP-FPM === {{{#!highlight nginx numbers=off # 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; } }}} === Nagłówki bezpieczeństwa dla HTTPS === {{{#!highlight nginx numbers=off 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"; }}} === http auth === (!) TBA |
|
| Linia 31: | Linia 493: |
| * https://calomel.org/nginx.html * https://calomel.org/freebsd_network_tuning.html * https://pyd.io/freebsd-nginx-php-fpm/ * http://www.defcon1.org/html/nginx.html |
* [[https://calomel.org/nginx.html||target="_blank"]] * [[https://calomel.org/freebsd_network_tuning.html||target="_blank"]] * [[https://pyd.io/freebsd-nginx-php-fpm/||target="_blank"]] * [[http://www.defcon1.org/html/nginx.html||target="_blank"]] |
Spis Treści
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ń 02.09.2017 zostały wybrane następujące:
OPTIONS_FILE_SET+=DSO
OPTIONS_FILE_SET+=FILE_AIO
OPTIONS_FILE_SET+=IPV6
OPTIONS_FILE_SET+=HTTP
OPTIONS_FILE_SET+=HTTP_CACHE
OPTIONS_FILE_SET+=HTTP_GZIP_STATIC
OPTIONS_FILE_SET+=HTTP_REWRITE
OPTIONS_FILE_SET+=HTTP_SLICE
OPTIONS_FILE_SET+=HTTP_SSL
OPTIONS_FILE_SET+=HTTP_STATUS
OPTIONS_FILE_SET+=HTTPV2
OPTIONS_FILE_SET+=STREAM
OPTIONS_FILE_SET+=STREAM_SSL
OPTIONS_FILE_SET+=STREAM_SSL_PREREAD
OPTIONS_FILE_SET+=THREADS
OPTIONS_FILE_SET+=WWW
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_JSON_STATUS
OPTIONS_FILE_SET+=HTTP_UPLOAD
OPTIONS_FILE_SET+=HTTP_UPLOAD_PROGRESS
OPTIONS_FILE_SET+=BROTLI
Obsługa PHP
PHP (lang/php71) powinno mieć wybrane następujące opcje:
[x] CLI Build CLI version [x] FPM Build FPM version [x] FPM_IPV6 Enable ipv6 patch for FPM [x] IPV6 Enable ipv6 support [x] LINKTHR Link thread lib (for threaded extensions)
Konfiguracja php.ini
engine = On
short_open_tag = Off
precision = 14
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = -1
disable_functions =
disable_classes =
zend.enable_gc = On
expose_php = On
max_execution_time = 30
max_input_time = 60
memory_limit = 128M
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = On
variables_order = "GPCS"
request_order = "GP"
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 1048M
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
default_charset = "UTF-8"
doc_root =
user_dir =
enable_dl = Off
file_uploads = On
upload_tmp_dir = /var/tmp/www
upload_max_filesize = 1035M
max_file_uploads = 20
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60
[CLI Server]
cli_server.color = On
[Date]
date.timezone = Europe/Warsaw
[filter]
[iconv]
[intl]
[sqlite3]
[Pcre]
[Pdo]
[Pdo_mysql]
pdo_mysql.cache_size = 2000
pdo_mysql.default_socket=
[Phar]
[mail function]
SMTP = localhost
smtp_port = 25
mail.add_x_header = On
[SQL]
sql.safe_mode = Off
[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1
[Interbase]
ibase.allow_persistent = 1
ibase.max_persistent = -1
ibase.max_links = -1
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
ibase.dateformat = "%Y-%m-%d"
ibase.timeformat = "%H:%M:%S"
[MySQLi]
mysqli.max_persistent = -1
mysqli.allow_persistent = On
mysqli.max_links = -1
mysqli.cache_size = 2000
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off
[mysqlnd]
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = Off
[OCI8]
[PostgreSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0
[bcmath]
bcmath.scale = 0
[browscap]
[Session]
session.save_handler = files
session.use_strict_mode = 0
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.sid_length = 26
session.trans_sid_tags = "a=href,area=href,frame=src,form="
session.sid_bits_per_character = 5
session.save_path = "/var/tmp/www"
[Assertion]
zend.assertions = -1
[COM]
[mbstring]
[gd]
[exif]
[Tidy]
tidy.clean_output = Off
[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
soap.wsdl_cache_limit = 5
[sysvshm]
[ldap]
ldap.max_links = -1
[mcrypt]
[dba]
[opcache]
[curl]
[openssl]
openssl.capath = /etc/ssl
; Local Variables:
; tab-width: 4
; End:
Konfiguracja php-fpm.conf
[global]
pid = run/php-fpm.pid
syslog.facility = daemon
syslog.ident = php-fpm
log_level = notice
emergency_restart_threshold = 0
process.max = 128
daemonize = yes
include=/usr/local/etc/php-fpm.d/*.conf
Konfiguracja etc/php-fpm.d/www.conf
[www]
user = www
group = www
listen = 127.0.0.1:9000
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.process_idle_timeout = 10s;
pm.max_requests = 500
security.limit_extensions = .php .php3 .php4 .php5 .php7
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /var/tmp/www
env[TMPDIR] = /var/tmp/www
env[TEMP] = /var/tmp/www
Uruchomienie php-fpm
W skryptach startowych (/etc/rc.conf lub /etc/rc.conf.d/php_fpm) należy ustawić:
php_fpm_enable="YES"
A następnie uruchomić demon:
service php-fpm start
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;
}
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 128k;
postpone_output 0;
reset_timedout_connection on;
send_timeout 10s;
keepalive_timeout 0;
#keepalive_timeout 65;
brotli on;
brotli_static on;
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;
gzip off;
gzip_static on;
gzip_buffers 256 8k;
gzip_comp_level 9;
gzip_http_version 1.0;
gzip_min_length 0;
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_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.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;
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;
location / {
root /var/www/htdocs/virtuls/www.mojadomena.pl/data;
index index.html index.htm;
}
# 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$ {
root html;
fastcgi_pass 127.0.0.5:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$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;
}
Konfiguracja wspólne
Poniżej konfiguracje, które warto umieścić w repozytorium skryptów:
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
# 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;
}
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";
http auth
TBA
Źródła w sieci internet
A jak coś nie jest jasne, to napisz do administratora.
