1

我已经尝试了几种我在互联网上找到的方法,但我仍然没有设法工作。

我想要的是,我有一个 url 的服务器配置: www.domain.com我已经安装并配置了一个 Drupal 网站。

我还有一个子域api.domain.com,我在其中安装并运行了 Laravel 应用程序。

重要的:

  • 每个项目都有自己的 nginx 配置。
  • 这两个项目都是我根目录下的兄弟项目。

我需要的

对 URL www.domain.com/api的所有请求都被请求到子域api.domain.com并且如果是特定的 URL,例如www.domain.com/api/option1/options2 request api.domain.com/option1/ option2 重定向用户。

所以我基本上需要 Drupal 的 NGINX 配置忽略所有对/api URL 的请求和对子域的请求

为什么我需要

我需要将所有子域和其他所有内容都放在同一个域下,因为我只有 SSL 可用于www.domain.com而不是*.domain.com


我不知道这是否是解决我的问题的最佳方法,但如果您有任何其他建议,我愿意。

提前致谢。


我自己的答案

我无法回答自己的问题,所以这是我设法解决的答案。

location   ^~ /api/  {
    rewrite ^/api/?(.*)$   /$1  break;
    proxy_pass http://api.domain.com;
}

这也将强制使用最后的斜杠。

如果您不想强制使用尾部斜杠,只需删除该位置的最后一个斜杠

4

1 回答 1

0

有两种方法,最简单的方法是在根域中创建一个代理到 api 子域的位置

location /api {
  rewrite ^/api(.*)$ $1 last; # removing the `/api` prefix from the URI before proxying
  proxy_pass http://api.example.com;
}

第二种方法是在该位置写入子域的整个配置,以避免进行代理

location ^~ /api(.*) {
  root /path/to/api/root;
  # add any config you believe should be here
  try_files $uri $uri/ /index.php$1; # depends on your api way of functioning
}

告诉我我是否误解了什么或有什么问题。

于 2014-02-01T17:56:55.007 回答