【问题标题】:How to show (the contents of) a subdomain as a path/subfolder with nginx如何使用 nginx 将子域(的内容)显示为路径/子文件夹
【发布时间】:2018-12-07 23:36:09
【问题描述】:

我有 2 个网站:

  • api.example.com(一个 Django 应用)
  • example.com(Ghost 博客)

这是我当前为我的博客设置的 nginx(根域)

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

server_name example.com

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

# this was created by ghost one click deploy on DigitalOcean
location / {
    proxy_pass http://localhost:2369;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_buffering off;
}

我正在努力做到这一点,以便我可以转到 example.com/api 并查看 api.example.com 的内容,但没有重定向,地址栏中的 url 应该显示 example.com/api

我什至不知道这个的正确术语.. 代理?掩蔽?

【问题讨论】:

    标签: django nginx devops ghost-blog


    【解决方案1】:

    您需要的称为反向代理。试试这个配置:

    server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;
        server_name example.com;
        resolver <some_name_server_ip_here>;
    
        root /usr/share/nginx/html;
        index index.html index.htm;
    
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_buffering off;
        location / {
            proxy_set_header Host $http_host;
            proxy_pass http://localhost:2369;
        }
        location /api {
            proxy_set_header Host api.example.com;
            proxy_pass http://api.example.com;
        }
    }
    

    如果您使用域名指定支持的 api.example.com,则需要将 resolver 指令添加到您的 server 配置中。或者您可以使用 IP 地址指定它而不使用 resolver 指令。无论如何,您需要使用 proxy_set_header 指令明确指定您的 api 后端服务器名称。您可以使用本地名称服务器作为 resolver 指令参数(如果有),或者使用外部的东西,例如 Google 公共 DNS (8.8.8.8) 或 ISP 为您提供的 DNS。

    【讨论】:

      猜你喜欢
      • 2013-04-06
      • 2017-08-23
      • 1970-01-01
      • 2014-12-06
      • 2013-05-17
      • 2016-11-05
      • 2017-08-24
      • 1970-01-01
      • 2023-03-20
      相关资源
      最近更新 更多