Im trying to redirect my Laravel+vuejs+nuxtjs
project from http to https but when I enter http://example.com or http://www.example.com an empty file being downloaded instead
What have I done so far :
1- Commenting default_type application/octet-stream
and adding default_type text/html
instead in nginx.conf
2-defining types { } default_type "text/plain";
in location /{}
of the example.com.conf
3-nginx redirect with the code below
server{
listen xx.xx.xx.xx:80;
server_name example.com www.example.com;
return 301 https://www.example.com$request_uri;
}
4- tried to redirect it with a .php file with the following example.com.conf file:
server {
listen 37.152.191.249:80;
server_name www.example.com example.com;
access_log /usr/local/apache/domlogs/example.com.bytes bytes;
access_log /usr/local/apache/domlogs/example.com.log combined;
error_log /usr/local/apache/domlogs/example.com.error.log error;
root /home/example/public_html/;
index index.php;
location / {
types { } default_type "text/plain";
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~* "/\.(htaccess|htpasswd)$" {deny all;return 404;}
disable_symlinks if_not_owner from=/home/example/public_html;
}
the index.php in public_html code :
$location = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
header('HTTP/1.1 301 Moved Permanently');
header('Location: ' . $location);
exit;
None of the above worked and the problem still presist.
+Current Configurations :
nginx -t report :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
example.com.ssl.conf :
server{
listen xx.xx.xx.xx:443 http2 ssl;
server_name example.com;
ssl_certificate /etc/pki/tls/certs/example.com.bundle;
ssl_certificate_key /etc/pki/tls/private/example.com.key;
ssl_protocols TLSv1.2;
ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EE3CDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA!RC4:EECDH:!RC4:!aNULL:!eN$
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 60m;
return 301 https://www.example.com$request_uri;
}
server {
listen xx.xx.xx.xx:443 http2 ssl;
server_name www.example.com;
access_log /usr/local/apache/domlogs/example.com.bytes bytes;
access_log /usr/local/apache/domlogs/example.com.log combined;
error_log /usr/local/apache/domlogs/example.com.error.log error;
ssl_certificate /etc/pki/tls/certs/example.com.bundle;
ssl_certificate_key /etc/pki/tls/private/example.com.key;
ssl_protocols TLSv1.2;
ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA!RC4:EECDH:!RC4:!aNULL:!eN$
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 60m;
root /home/example/core/public/;
index index.php;
location / {
proxy_set_header Connection 'upgrade';
proxy_http_version 1.1;
proxy_pass https://xx.xx.xx.xx:3000$uri;
proxy_intercept_errors on;# In order to use error_page directive this needs to be on
error_page 404 = @php;
}
location @php {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~* "/\.(htaccess|htpasswd)$" {deny all;return 404;}
disable_symlinks if_not_owner from=/home/example/public_html;
location /.well-known/acme-challenge {
default_type "text/plain";
alias /usr/local/apache/autossl_tmp/.well-known/acme-challenge;
}
location /.well-known/pki-validation {
default_type "text/plain";
alias /usr/local/apache/autossl_tmp/.well-known/acme-challenge;
}
}
Current example.com.conf :
server{
listen xx.xx.xx.xx:80;
server_name example.com www.example.com;
return 301 https://www.example.com$request_uri;
}
I have not added the nginx -T report since it shows irrelevant configuration files from other websites.
Also server running multiple sites and the wordpress ones have no problem redirecting using the code provided at #3 for redirect but when it comes to THE site that uses nuxtjs , I get a empty file downloaded instead.
Any help would be highly appreciated
Best Answer
I copied one of my wordpress nginx config and replaced the xxx part with domain name and yyy with server IP
It gets redirected to https without downloading anything, I've rewinded all the changes I had done to nginx and php-fpm to their default.
Now its working But why ?
after playing around noticed changing the location of the working nginx config to
location ~ \.php$
(the one I was using before) will make the issue return.thats it!No further investigation of why
location ~ \.php$
does NOT work butlocation ~ [^/]\.php(/|$)
does.Hope it helps.