Search code examples
apachemod-rewritemod-proxyghost-blog

"Cannot get / " Ghost blog hosting issue


I want to install a ghost blog with my angular app. Angular app and ghost blogs are in separate directories which are "example_site" and "example_blog" respectively in the file system. My angular app is on "example.in" and I want ghost blogs to be accessible under "example.in/blogs". I have used a proxy, Here is my apache server config

<virtualHost *:80>
        ServerName example.in
        ServerAlias www.example.in
        ServerAdmin webmaster@localhost
        RedirectMatch permanent ^(.*)$ https://www.example.in$1
</virtualHost>

<VirtualHost *:443>

        ServerName example.in
        ServerAlias www.example.in
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/example_site/dist/

        <Directory /var/www/html/example_site/dist/>
                RewriteEngine On
                RewriteBase /
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteCond %{REQUEST_FILENAME} !-d
                RewriteRule .* /index.html [L]
        </Directory>


        ProxyPreserveHost On
        ProxyPass /blogs/ http://127.0.0.1:2368/
        ProxyPassReverse /blogs/ http://127.0.0.1:2368/


        SSLEngine on
        SSLCertificateFile /var/www/html/example_site/cert/123.crt
        SSLCertificateKeyFile /var/www/html/example_site/cert/example.key
        SSLCertificateChainFile /var/www/html/example_site/cert/examplecrt


        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Here is my ghost config

{
  "url": "https://example.in/blogs",
  "server": {
    "port": 2368,
    "host": "127.0.0.1"
  },
  "database": {
    "client": "mysql",
    "connection": {
      "host": "localhost",
      "user": "admin",
      "password": "***",
      "database": "example_blogs_prod"
    }
  },
  "mail": {
    "transport": "Direct"
  },
  "logging": {
    "transports": [
      "file",
      "stdout"
    ]
  },
  "process": "systemd",
  "paths": {
    "contentPath": "/var/www/html/example_blogs/content"
  }
}

Solution

  • I got the solution I added RequestHeader set X-Forwarded-Proto https and did some changes to the files, Here is the updated files Here is my apache server config

    <virtualHost *:80>
            ServerName example.in
            ServerAlias www.example.in
            ServerAdmin webmaster@localhost
            RedirectMatch permanent ^(.*)$ https://www.example.in$1
    </virtualHost>
    
    <VirtualHost *:443>
    
            ServerName example.in
            ServerAlias www.example.in
            ServerAdmin webmaster@localhost
            DocumentRoot /var/www/html/example_site/dist/
    
            <Directory /var/www/html/example_site/dist/>
                    RewriteEngine On
                    RewriteCond %{REQUEST_FILENAME} !-f
                    RewriteCond %{REQUEST_FILENAME} !-d
                    RewriteRule .* /index.html [L]
            </Directory>
    
            RequestHeader set X-Forwarded-Proto https
            ProxyPreserveHost On
            ProxyPass /blogs http://localhost:2368/blogs
            ProxyPassReverse /blogs http://localhost:2368/blogs
    
            SSLEngine on
            SSLCertificateFile /var/www/html/example_site/cert/123.crt
            SSLCertificateKeyFile /var/www/html/example_site/cert/example.key
            SSLCertificateChainFile /var/www/html/example_site/cert/examplecrt
    
    
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    

    Here is the ghost config file

    {
      "url": "https://example.in/blogs",
      "server": {
        "port": 2368,
        "host": "127.0.0.1"
      },
      "database": {
        "client": "mysql",
        "connection": {
          "host": "localhost",
          "user": "admin",
          "password": "***",
          "database": "example_blogs_prod"
        }
      },
      "mail": {
        "transport": "Direct"
      },
      "logging": {
        "transports": [
          "file",
          "stdout"
        ]
      },
      "process": "systemd",
      "paths": {
        "contentPath": "/var/www/html/example_blogs/content"
      }
    }