api.example.com 如何代理到 www.example.com/api/ 下?
我想要实现的结果是:
访问 api.example.com/hello/world
就相当于访问 www.example.com/api/hellp/world
这样。就是 url 看起来好看一点。
不知道在 nginx 中的配置应该需要怎么写?
24 回复
如果使用了 proxy_pass 后就会一直加 /api 并重定向。 image.png 这是 nginx 的配置:
server {
listen 80;
listen 443 ssl;
server_name api.example.com;
ssl_certificate fullchain.pem;
ssl_certificate_key privkey.pem;
access_log /var/log/nginx/api/access.log;
error_log /var/log/nginx/api/error.log;
location / {
proxy_pass http://www.example.com/api/;
proxy_set_header Host $host;
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_redirect off;
}
}
server {
listen 80;
server_name api.example.com;
rewrite ^/(.*) http://www.example.com/api/1ドル permanent;
}
然后再写一个配置处理www.example.com
最后proxy_pass到某个端口