我希望Nginx代理多个网站。
使用<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="test-module" ng-controller="main-controller">
<input type="button" value="click" ng-click="somethingWasClicked()">
</div>
,site1.someIp
或site2.someIp
,someIp/site1
当我尝试使用以下设置实现此目的时:
someIp/site2
这导致server{
listen 80;
listen [::]:80;
location /first {
proxy_pass http://localThing:somePort;
}
location /second {
proxy_pass localThing2;
}
}
转发到/first
但实际上,我只想转发到http://localThing:somePort/first
目前,我使用多个服务器监听不同的端口,例如http://localThing:somePort
,someIp:1111
,但这不是一个很好的解决方案。
@jdewald友情提供的答案是一个很好的开始,因为转发HTML而不是CSS。
到目前为止,我注意到它可以简化为
someIP:2222
在location /first {
proxy_pass http://someip:somePort/;
}
之后添加最后/
非常重要,但会导致与无法访问CSS相同的问题。当应用程序(https://concourse-ci.org/)在somePort/
提供时,CSS似乎无法访问。如果location设置为localIp:somePort/public
,这不是问题,但是我想使用上述两种方法之一以良好的方式代理多个服务,而不是使用不同的端口映射到/
。 / p>
答案 0 :(得分:1)
您可以重写URI:
location /first {
rewrite ^/first(.*)$ $1 break;
proxy_pass http://someip:somePort;
}
或者,您可以将/ first块设为regex,将proxy_pass设置为$ 1(使用相同的正则表达式),例如:
location ~ ^/first(.*) {
proxy_pass http://someip:somePort$1;
}