LetsEncrypt – VirtualMin – Nginx : Change Root Folder

I am using virtualmin for the first time on ubuntu 16.04 . My website root folder is in :


So when i use let’s encrypt – it generates the key file inside public_html

But is then unable to access it at : domain.com/.well-know/…

Error :

Parsing account key...
Parsing CSR...
Registering account...
Already registered!
Verifying example.com...
Wrote file to /home/example/public_html/.well-known/acme-challenge/uRAt9PdzbO8nyt1wClsB4KX04JG80qFluSXGs, but couldn't download http://example.com/.well-known/acme-challenge/uRAt9PdzbO8nyt1wClsB4KX04JG80qFluSXGs
Traceback (most recent call last):
  File "/usr/share/webmin/webmin/acme_tiny.py", line 235, in <module>
  File "/usr/share/webmin/webmin/acme_tiny.py", line 231, in main
    signed_crt = get_crt(args.account_key, args.csr, args.acme_dir, args.dns_hook, args.cleanup_hook, log=LOGGER, CA=args.ca)
  File "/usr/share/webmin/webmin/acme_tiny.py", line 184, in get_crt
    domain, challenge_status))
ValueError: example.com challenge did not pass:

I’m using NGINX and i have this in sites-enabled conf :

server {
    server_name .azure.com; 
    return 301 http://www.example.com$request_uri;

server {

    server_name example.com www.example.com;
    root /home/example/public_html/public;
    index index.html index.php;
    access_log /var/log/virtualmin/example.com_access_log;
    error_log /var/log/virtualmin/example.com_error_log;
    fastcgi_param GATEWAY_INTERFACE CGI/1.1;
    fastcgi_param SERVER_SOFTWARE nginx;
    fastcgi_param QUERY_STRING $query_string;
    fastcgi_param REQUEST_METHOD $request_method;
    fastcgi_param CONTENT_TYPE $content_type;
    fastcgi_param CONTENT_LENGTH $content_length;
    fastcgi_param SCRIPT_FILENAME /home/example/public_html/public$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_param REQUEST_URI $request_uri;
    fastcgi_param DOCUMENT_URI $document_uri;
    fastcgi_param DOCUMENT_ROOT /home/example/public_html/public;
    fastcgi_param SERVER_PROTOCOL $server_protocol;
    fastcgi_param REMOTE_ADDR $remote_addr;
    fastcgi_param REMOTE_PORT $remote_port;
    fastcgi_param SERVER_ADDR $server_addr;
    fastcgi_param SERVER_PORT $server_port;
    fastcgi_param SERVER_NAME $server_name;
    fastcgi_param HTTPS $https;

    location / 
        try_files $uri $uri/ /index.php?$query_string;
        gzip on;

    location ~* /.(?:css|js|woff|eot|svg|ttf|otf|png|gif|jpe?g) 
        expires max;

    location ~ /.php$ 
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;

    location ~ //.ht 
        deny all;

    location ^~ /public/.well-known/acme-challenge/ {

        default_type "text/plain";
        root /var/www/letsencrypt;

    listen default_server ssl;
    ssl_certificate /home/example/ssl.cert;
    ssl_certificate_key /home/example/ssl.key;

Any ideas how to fix it ?

Try this

   location ^~ /.well-known/acme-challenge/ {
         alias /home/example/public_html/;
         try_files $uri $uri/ =404;