Redirect Http to Https

February 2, 2017 1.3k views
Nginx DigitalOcean Let's Encrypt WordPress Ubuntu 16.04

I have given certificate to my site. I am using vesta panel in background. Now when I try to open the site giving https in url it opens home page but does not opens other pages... it gives 404 error. Even when try to redirect adding
if ($scheme = http) {
#return 301 https://$servername$requesturi;
return 301 https://chetantest.tk$request_uri;
}
It does redirect to https but still does not properly and not showing other pages.
this is the site link: skydental.in
this is my nginx.conf file:

server {
listen 139.59.10.214:80;
servername skydental.in www.skydental.in;
root /home/admin/web/skydental.in/public
html;
index index.php index.html index.htm;
accesslog /var/log/nginx/domains/skydental.in.log combined;
access
log /var/log/nginx/domains/skydental.in.bytes bytes;
error_log /var/log/nginx/domains/skydental.in.error.log error;

location / {

    location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {
        expires     max;
    }

    location ~ [^/]\.php(/|$) {
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        if (!-f $document_root$fastcgi_script_name) {
            return  404;
        }

        fastcgi_pass    127.0.0.1:9001;
        fastcgi_index   index.php;
        include         /etc/nginx/fastcgi_params;
    }

    index index.php index.html index.htm;
    try_files $uri $uri/ /index.php?$args;
}

error_page  403 /error/404.html;
error_page  404 /error/404.html;
error_page  500 502 503 504 /error/50x.html;

location /error/ {
    alias   /home/admin/web/skydental.in/document_errors/;
}

location ~* "/\.(htaccess|htpasswd)$" {
    deny    all;
    return  404;
}

location /vstats/ {
    alias   /home/admin/web/skydental.in/stats/;
    include /home/admin/web/skydental.in/stats/auth.conf*;
}

include     /etc/nginx/conf.d/phpmyadmin.inc*;
include     /etc/nginx/conf.d/phppgadmin.inc*;
include     /etc/nginx/conf.d/webmail.inc*;

include     /home/admin/conf/web/nginx.skydental.in.conf*;

}
Any help appriciated... please

1 Answer

@inboundRaj

It's really best if you create two server blocks -- one for Port 80 and one for Port 443. The one for Port 80 will be your redirect while the one for Port 443 is your primary and contains all the major config.

i.e.

server {
    listen 80;
    listen [::]:80;
    server_name yourdomain.ext www.yourdomain.ext;

    return 301 https://$host$request_uri;
}

server {
    listen 443;
    listen [::]:443;
    server_name yourdomain.ext www.yourdomain.ext;

    ...
    ...
    ...
}

You'd simply replace yourdomain.ext and www.yourdomain.ext with your actual domain name with and without the www.

This can be pasted in to the same configuration file and does not require that you separate them.

The ... in the second server block is where you'd paste in the rest of your configuration.

Have another answer? Share your knowledge.