In response to Axigen Forum question :-)
Hi, Without knowing the problem involved, or if there is an Axigen configuration involved, I have shown below a basic nginx.conf configuration I use on any site. (Some modifications likely needed for your situation such as domain name and root directory.) This indicates I have a web directory and content for the domain name as well as an Axigen installation. If installing a paid SSL it means you do not have to go through another process of installing Let's Encrypt with the certbot command. But, I have shown Let's Encrypt in the example. I don't know if this helps, but happy to show the basic nginx.conf that I use. I add more features of course. The main thing is to see if there is an error on the Nginx side of things. I have nginx version 1.27. You probably know, you test the config with the command nginx -t If using Let's Encrypt, you have to install with certbot by first removing the stanza for port 443 and the line under port 80 for ``` return 301 ........ ``` After the installation works, you put those back. (Just mentioning in case) ------------------------------------------------------- # Should be the same directories on Debian but you can check, e.g. nginx -t or find the directories is any errors user nginx; worker_processes auto; error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/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/access.log main; sendfile on; tcp_nopush on; keepalive_timeout 65; server_names_hash_bucket_size 64; client_max_body_size 50M; include /etc/nginx/conf.d/*.conf; add_header Strict-Transport-Security "max-age=31536000; includeSubdomains"; ssl_session_timeout 10m; add_header Content-Security-Policy "object-src 'none'; base-uri 'none'; frame-ancestors 'self'; form-action 'self';"; # I used the following with WordPress but have not tested with Axigen: # add_header X-Xss-Protection "1; mode=block" always; # add_header X-Frame-Options "SAMEORIGIN" always; # add_header X-Content-Type-Options "nosniff" always; # add_header Permissions-Policy "autoplay=(), encrypted-media=(), fullscreen=(), geolocation=(), microphone=(), midi=()"; # add_header Clear-Site-Data "*"; server { listen 80; listen [::]:80; # USER YOUR OWN DOMAIN NAME of course server_name mydomain.com www.mydomain.com; return 301 https://mydomain.com$request_uri; # WE ASSUME THE ROOT WEBSITE DIRECTORY is /var/www/html but it can be anything (however Linux soft links tend not to work) root /var/www/html; index index.php index.html index.htm; # Stop anyone trying to access the site via the IP address set $test 0; if ( $host != "mydomain.com" ){ set $test 1; } if ( $host != "www.mydomain.com" ){ set $test 1$test; } if ( $test = 11 ){ return 444; #CONNECTION CLOSED WITHOUT RESPONSE } location / { index index.php index.html index.htm; try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { # SECURITY : Zero day Exploit Protection try_files $uri =404; # ENABLE : Enable PHP, listen fpm sock fastcgi_split_path_info ^(.+\.php)(/.+)$; # CHECK YOUR php-fpm.d or php8.3-fpm.d directory (or whatever version) for the actual sock name used in www.conf # and that nginx is used and not apache in the same file fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location = /favicon.ico { log_not_found off; access_log off; } # if you have a robots.txt file location = /robots.txt { allow all; log_not_found off; access_log off; } # Assuming you have error .html files - you should have error files with some sort of content anyway error_page 404 /404.html; location = /404.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } # end port 80 } # start 443 server { listen 443 ssl; listen [::]:443 ssl; # In current nginx version we have http2 on this separate line: http2 on; server_name mydomain.com; root /var/www/html; # server_tokens off; # IN THIS EXAMPLE WE HAVE /etc/letsencrypt FOR THE SSL CERTIFICATE # It can be a purchased SSL like /etc/ssl/certs and /etc/ssl/private/... # We assume the SSL certificates are correctly added to Axigen and configured ssl_certificate "/etc/letsencrypt/live/mydomain.com/fullchain.pem"; ssl_certificate_key "/etc/letsencrypt/mydomain.com/live/privkey.pem"; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers EECDH+CHACHA20:EECDH+AES; ssl_ecdh_curve X25519:prime256v1:secp521r1:secp384r1; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; # Again, reduce hacker traffic if ( $host != "mydomain.com" ){ return 444; #CONNECTION CLOSED WITHOUT RESPONSE } # Add expires headers for better performance tool ratings location ~* .(?:ico|css|js|gif|jpe?g|png|jpg|woff2|eot|ttf|svg|woff)$ { expires 30d; add_header Pragma "public"; add_header Cache-Control "public"; } # no use of memcached in this basic configuration: location / { index index.php index.html index.htm; try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { # SECURITY : Zero day Exploit Protection try_files $uri =404; # ENABLE : Enable PHP, listen fpm sock fastcgi_split_path_info ^(.+\.php)(/.+)$; # Again, use the correct sock as shown in www.conf file fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } # Again, assuming you have a robots.txt file - not necessary though but typically used with WordPress installations location = /robots.txt { allow all; log_not_found off; access_log off; try_files $uri /index.php?$args; } error_page 404 /404.html; location = /404.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } # end port 443 } # end nginx.conf }