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

разместить blog.domain.com из / myapp / public / blog и запретить доступ из моего app.com/blog/*?

Имея настройку сервера, как показано ниже. Я хочу запретить кому-либо доступ http://myapp.com/blog/index.html который будет перенаправлен на /public/blog/index.html. Возможно ли это, или мне действительно следует хранить папку блога вне общедоступных? (Чего я не хочу)

server {
  listen 80;
  server_name
  myapp.*

  root /srv/myapp/current/public;

}

server {
  listen 80;
  server_name
  blog.myapp.*

  root /srv/myapp/current/public/blog;

}

Это действительно возможно. Попробуйте один из двух вариантов, представленных ниже ...

server {
  listen 80;
  server_name
  myapp.*

  root /srv/myapp/current/public;

  location /blog {
    # option 1
    return 444;

    # option 2
    # rewrite /blog/(.*) $scheme://blog.myapp.tld/$1 permanent;
  }

}

server {
  listen 80;
  server_name
  blog.myapp.*

  root /srv/myapp/current/public/blog;

}

Некоторое объяснение двух вариантов ...

return 444 - это специальный код статуса Nginx, ничего не возвращающий браузеру. Ссылка: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes . Если вы предпочитаете отправить другой код состояния, например 403, удалите 444 и введите любой код, который вы предпочитаете;

rewrite /blog/(.*) $scheme://blog.myapp.tld/$1 permanent; преобразует подкаталог в поддомен. На это уже был дан ответ. Ссылка: Правило перезаписи Nginx (подкаталог до поддомена)

Вы можете узнать больше о return заявление на http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return и о rewrite заявление на http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite .

Надеюсь, это поможет.