Hello everyone,
I’ve been struggling in the last 2 weeks to make my domain accessible, but didn’t find a solution yet. I am running an Ubuntu VPS with installed Nginx, Varnish and Redis for Magento 2.
The website can be reached only if I hit - https://domain.com/ but if I try domain.com or http://domain.com it returns “Hmmm… can’t reach this page” I am using multidomain option as I have set up 2 different domains - domain.com and domain.eu
I am sharing you the configuration of my nginx at /etc/nginx/sites-enabled/mywebsite.com
:
upstream fastcgi_backend {
server unix:/run/php/php7.3-fpm.sock;
}
map $http_host $MAGE_RUN_CODE {
default '';
domain.eu viewinternational;
domain.com en;
}
server {
# this is the main server conf for port 443
server_name domain.com domain.eu;
listen 443 ssl http2;
client_max_body_size 20M;
# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;
set $cors_credentials '';
set $cors_content_type '';
set $cors_content_length '';
if ($http_origin ~ '.+') {
set $cors_credentials 'true';
}
if ($request_method = OPTIONS) {
set $cors_content_type 'text/plain';
set $cors_content_length '0';
}
# empty header will not be added
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials $cors_credentials always;
add_header Access-Control-Allow-Methods
$http_access_control_request_method always;
add_header Access-Control-Allow-Headers $http_access_control_request_headers always;
add_header Content-Type $cors_content_type;
add_header Content-Length $cors_content_length;
if ($request_method = OPTIONS) {
return 204;
}
# this is for Varnish with listers to 6081 by default you must make sure tha varnish looks for backend at port 8080. Check config at the end of the file
location / {
proxy_pass http://127.0.0.1:6081;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Ssl-Offloaded "1";
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
proxy_http_version 1.1;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
fastcgi_buffer_size 32k;
fastcgi_buffers 4 32k;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
}
# this is with let's encrypt, here you can set your own paths for SSL certs
ssl_certificate /etc/letsencrypt/live/domain.eu-0001/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/domain.eu-0001/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
#ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
# this makes nginx to server directly media files it's faster than to go through Varnish
location /media/ {
auth_basic off;
proxy_pass http://127.0.0.1:6081;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Ssl-Offloaded "1";
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
proxy_http_version 1.1;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
fastcgi_buffer_size 32k;
fastcgi_buffers 4 32k;
}
}
# this is the main server conf for serving magento. This should be set as the varnish backend
server {
server_name domain.com domain.eu;
listen 127.0.0.1:8080;
set $MAGE_ROOT /var/www/html;
set $MAGE_MODE developer;
set $MAGE_RUN_TYPE store;
include /var/www/html/nginx.conf;
client_max_body_size 20M;
}
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Hello,
As far as I can see you only have a server block for port 443 (HTTPS) and there is no server block for port 80 (HTTP), this is why when you access your website over HTTP you get the site can not be reached message.
To fix that, you could add a server block in the beginning of the configuration file as follows:
All that this would do is to listen on port 80 and redirect the traffic to port 443.
Hope that this helps. Best, Bobby