【问题标题】:How to rewrite the URL using nginx如何使用 nginx 重写 URL
【发布时间】:2015-12-20 06:19:51
【问题描述】:

我有一个网址 https://test.rockon.me/Profiles/XYZ-ABC-PQRS/default.aspx 现在使用 nginx 我必须编写创建子域的规则,该子域可以将 URL 设为 https://XYZ-ABC-PQRS/test.rockon.me/Profiles/default.aspx 这里 XYZ-ABC-PQRS 是某个用户的用户名。

 server 
     {
        access_log /var/log/nginx/subcalls.log;
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

        add_header Access-Control-Allow-Origin *;
        listen  80;
        server_name ~^(?<subdomain>.+)\nithinveer\.com$;

        location / 
    {
         proxy_pass http://192.168.6.190/Profiles/$subdomain$request_uri/;
    }

【问题讨论】:

  • 你试过了吗?重写test.rockon.me/Profiles(.*)/default.aspx https://$1/test.rockon.me/Profiles/default.aspx
  • 感谢您的努力,我也试过了。不幸的是,它没有奏效。代码中的某些地方缺少一些逻辑。
  • 没有任何错误,但 nginx 配置不正确。当我们移至用户的公开个人资料时,该网站没有出现。

标签: nginx url-rewriting reverse-proxy


【解决方案1】:

您的不起作用,可能是因为您期望 $request_uri = /default.aspx 不是,实际上是子域之后的所有内容,即 /Profiles/user/default.aspx

试试这个,

server {
  server_name test.rockon.me;
  rewrite ^/Profiles/(.*)/default.aspx http://$1/test.rockon.me/Profiles/default.aspx permanent;
}

使用 proxy_pass 的另一个选项可以是,

server{
  server_name test.rockon.me;
  location / {
    rewrite /Profiles/(.*)/(.*) /Profiles/$1/$2 break;
    proxy_pass http://192.168.6.190;
  }
}

希望对您有所帮助。 :)

【讨论】:

    猜你喜欢
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 2020-06-03
    • 1970-01-01
    • 2016-02-07
    • 2019-01-24
    • 2015-03-19
    相关资源
    最近更新 更多