我想要实现的结果是:
访问 api.example.com/hello/world
就相当于访问 www.example.com/api/hellp/world
这样。就是 url 看起来好看一点。
不知道在 nginx 中的配置应该需要怎么写?
我想要实现的结果是:
访问 api.example.com/hello/world
就相当于访问 www.example.com/api/hellp/world
这样。就是 url 看起来好看一点。
不知道在 nginx 中的配置应该需要怎么写?
@fruit-memory 要的是浏览器的地址栏不显示改变后的 url 才可以。
url 重写啊!对外部是透明的 From Noder
你这是要浏览器地址栏显示改变后的URL,只能这么做吧?微信可能是以为你改变后的URL不安全
给 www.example.com再配置一个service啊. 你这个已经是不同的域了,感觉不适合用rewrite吧
@JZLeung
nginx 通过 host 来 match 到 server 的。
因此,你的配置需求去掉 proxy_set_header Host $host;
nginx配置url重写即可
server {
listen 80;
server_name api.example.com;
rewrite ^/(.*) http://www.example.com/api/$1 permanent;
}
然后再写一个配置处理www.example.com
最后proxy_pass到某个端口
如果使用了 proxy_pass 后就会一直加 /api 并重定向。
这是 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;
}
}
那就试试反向代理
这不就是反向代理么… nginx reverse proxy
重定向