Nginx: Difference between revisions

From wiki
Jump to navigation Jump to search
Line 10: Line 10:
# Put al customizations in your site-definitions (in ./sites-available) or in .conf files in the ./conf.d subdir. This make it easier to migrate your configuration to another server.
# Put al customizations in your site-definitions (in ./sites-available) or in .conf files in the ./conf.d subdir. This make it easier to migrate your configuration to another server.


==PHP support==
=PHP support=
To enable php suppport in ./sites-available/xxx put this
To enable php suppport in ./sites-available/xxx put this
   location ~ \.php$ {
   location ~ \.php$ {
Line 28: Line 28:


Wipe browser history for the HSTS websites if HSTS settings were disabled but the max-age has not passed yet for your browser (31536000 seconds is 1 year).
Wipe browser history for the HSTS websites if HSTS settings were disabled but the max-age has not passed yet for your browser (31536000 seconds is 1 year).
==Other recommenations==
In the http sectins put
<syntaxhighlight land=text>
# For security hide the server version
server_tokens off;
ssl_protocols TLSv1.2 TLSv1.3; #  Dropping SSL, TLSv1 and TLSv1.1
# For performance
client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;
client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 4 4k;
</syntaxhighlight>


=Issues and fixes=
=Issues and fixes=

Revision as of 18:04, 2 June 2025

Nginx is a webserver working very well on small systems

nginx -t
Test configuration
nginx -V
Print version, compiler version and configured parameters

Tips

  1. Put al customizations in your site-definitions (in ./sites-available) or in .conf files in the ./conf.d subdir. This make it easier to migrate your configuration to another server.

PHP support

To enable php suppport in ./sites-available/xxx put this

 location ~ \.php$ {
       #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
       include snippets/fastcgi-php.conf;
       fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
       fastcgi_intercept_errors on;
       fastcgi_param HTTPS on;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param SCRIPT_NAME     $fastcgi_script_name;
   
   }

Force clients to use https (HSTS)

Add to ./conf.d/myconfig.conf

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

Wipe browser history for the HSTS websites if HSTS settings were disabled but the max-age has not passed yet for your browser (31536000 seconds is 1 year).

Other recommenations

In the http sectins put

# For security hide the server version
server_tokens off;
ssl_protocols TLSv1.2 TLSv1.3; #  Dropping SSL, TLSv1 and TLSv1.1

# For performance
client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;

client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 4 4k;

Issues and fixes

could not build server_names_hash, you should increase server_names_hash_bucket_size: 32
Due to many servernames in a server definition. In a .conf file in /etc/nginx/conf.d put a line like
server_names_hash_bucket_size 64;
Using listen [::]:80 ipv6only=on;
The ipv6only parameter can be set only once. If you have several virtual host you should not use it.