我有2个网站:
这是我当前用于博客(根域)的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
的内容,但不会被重定向,并且地址栏中的网址应显示example.com/api
。
我什至不知道这个词的正确性。掩蔽?
答案 0 :(得分:0)
您所需要的称为反向代理。试试这个配置:
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
,则需要在server
配置中添加resolver
指令。或者,您可以使用IP地址指定它,而不使用resolver
指令。无论如何,您都需要使用proxy_set_header
指令明确指定api后端服务器名称。如果有本地名称服务器,则可以将其用作resolver
指令参数,也可以使用外部名称(例如Google公用DNS(8.8.8.8)或ISP为您提供的DNS)。