Назад | Перейти на главную страницу

Проблема с конфигурацией Nginx для блога-призрака внутри подкаталога на сервере LEMP

Мои требования

  1. Блог Ghost на www.mydomain.com/blog

  2. Index.html, contact.php, пара изображений и файлы js в корневом каталоге. (например, www.mydomain.com/index.html, mydomain.com/contact.php и т. д.)

После прочтения этого руководства https://www.digitalocean.com/community/tutorials/how-to-create-a-blog-with-ghost-and-nginx-on-ubuntu-14-04 , Я могу запустить ghost на www.mydomain.com/blog. Но, к сожалению, я не могу получить доступ к чему-либо из корневого каталога, то есть www.mydomain.com, поскольку он выдает ошибку 404

До Ghost Установить все внутри /usr/share/nginx/www был доступен в корневом каталоге. Теперь я использовал ls команда, чтобы проверить, присутствуют ли файлы внутри папки /usr/share/nginx/www и я могу просматривать эти файлы на своем терминале.

Когда я cd к /etc/nginx/sites-available/ папка, я вижу 2 файла призрак и дефолт и внутри /etc/nginx/sites-enabled/ Я могу видеть только призрак файл.

Когда я копирую дефолт файл из /etc/nginx/sites-available/ к /etc/nginx/sites-enabled/, Блог-призрак выдает ошибку 404.

Здесь дефолт сервер содержимого файлов {слушайте 80 default_server; слушать [::]: 80 default_server ipv6only = on;

            root /usr/share/nginx/html;
            index index.php index.html index.htm;

            # Make site accessible from http://localhost/
            server_name localhost;

            location / {
                    # First attempt to serve request as file, then
                    # as directory, then fall back to displaying a 404.
                    try_files $uri $uri/ =404;
                    # Uncomment to enable naxsi on this location
                    # include /etc/nginx/naxsi.rules
            }

            error_page 404 /404.html;
            error_page 500 502 503 504 /50x.html;
            location = /50x.html {
                    root /usr/share/nginx/html;
            }

            location ~ \.php$ {
                    try_files $uri =404;
                    fastcgi_split_path_info ^(.+\.php)(/.+)$;
                    fastcgi_pass unix:/var/run/php5-fpm.sock;
                    fastcgi_index index.php;
                    include fastcgi_params;
            }

            error_page 500 502 503 504 /50x.html;
            location = /50x.html {
                    root /usr/share/nginx/html;
            }

            location ~ \.php$ {
                    try_files $uri =404;
                    fastcgi_split_path_info ^(.+\.php)(/.+)$;
                    fastcgi_pass unix:/var/run/php5-fpm.sock;
                    fastcgi_index index.php;
                    include fastcgi_params;
            }

            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
            #location ~ /\.ht {
            #       deny all;
            #}
    }

Здесь призрак содержимое файла

    server {
        listen 80;
        server_name SERVERIP/spider;
        location / {
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   Host      $http_host;
            proxy_pass         http://127.0.0.1:2368;
        }
    }

Я использовал решение, указанное ниже, и оно сработало.

server {
    listen       80;
    server_name  localhost;

  location ^~ /blog {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_set_header X-NginX-Proxy true;

      proxy_pass http://127.0.0.1:2368;
      proxy_redirect off;
  }
}

https://www.ghostforbeginners.com/how-to-install-ghost-in-a-subdirectory/

Я нашел решение после интенсивного поиска в Google

Теперь сначала я скопировал файл конфигурации Ghost по умолчанию из доступные сайты папку в сайты включены папка с использованием

cp /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default

После того, как файл был скопирован, я перезапустил nginx, используя следующую команду service nginx restart

Теперь, когда я обновил страницу, я не мог видеть свой блог, но все из папки /usr/share/nginx/www доступен в корневом каталоге. т.е. все файлы из этой папки были доступны на mydomain.com

Возвращаясь к блогу Ghost, я сделал резервную копию того же самого и удалил ее из /etc/nginx/sites-enabled/default папка.

Вместо этого я вставил следующий код в объект сервера.

location ^~ /blog {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;

    proxy_pass http://127.0.0.1:2368;
    proxy_redirect off;
}

Перезагрузил nginx, все заработало!

Источник https://allaboutghost.com/how-to-install-ghost-in-a-subdirectory/