使用nginx的proxy_pass将所有页面代理

4

我正在使用nginx反向代理到另一台服务器。在没有将静态文件链接到位置之前,它无法提供服务。位置块非常长,但类似于下面的代码。我确定我这样做是错误的,但它能够工作,只是编写所有路径很繁琐。我想知道是否有更好的方法。

location / {
    proxy_pass    www.example.com;
}
location /sytlesheet.css {
    proxy_pass    www.example.com/stylesheet.css;
}
location /page1 {
    proxy_pass    www.example.com/page1;
}
#this goes on and on

有没有一种方法可以获取斜杠后面的所有内容,例如'page1',并将其传递到代理服务器,而不需要手动输入它?

我希望有一种方式可以使用变量或其他东西将所有页面和资源链接到一个单独的位置块:

location / {
    proxy_pass    www.example.com;
}
location /$variable {
    proxy_pass    www.example.com/$variable;
}

谢谢!

2个回答

3
你应该使用以下代码。
location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to proxy
    try_files $uri $uri/ @proxy;
}

location @proxy {

     proxy_pass    www.example.com;
}

0

看看这个。

location / {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass http://www.example.com;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接