我有一些在其他服务器上运行的服务,它们在没有SSL的http:// someLocalIp:80上提供了一个web应用程序。 我想在SSL中包装这个,并在https:// nginxServer-globalIp / deliver /
我能够看到像这样的后端服务,但这显然会中断所有链接和引用,因为现在“/ deliver /”必须是前缀。 我不明白如何去使用重写,因为重写似乎(对我)主要是用来改变请求,而不是从后端回复。 这是可能吗? 🙂
当前configuration:
server { listen 443; ssl on; ssl_certificate /etc/ssl/some.crt; ssl_certificate_key /etc/some.key; location /deliver { proxy_pass http://someLocalIp; } }
我已经尝试在proxy_pass的末尾添加/(尽可能多的答案build议),但是这会创build一个空白的响应,就好像后端服务没有向nginx发送任何东西。
另外,改变后端以匹配“/ deliver”前缀并不像听起来那么容易,所以我希望没有这样做就可以做到这一点。
反向代理有其局限性。 无论如何,重写每个embedded的URL(超链接,图像,资源链接)将是昂贵的。
正如您猜测的那样, nginx代理模块可以重写请求,并可以在redirect响应中重写location字段。 但是,否则它会使所附的HTML文档不受影响。
不过,我已经读过,有一个Apache模块 ,如果你真的需要走下去的路线,将工作。