【问题标题】:Nginx: how to add /something to a uri and still keep it workingNginx:如何将 /something 添加到 uri 并仍然保持工作
【发布时间】:2016-11-20 03:06:49
【问题描述】:

我有一个 nginx 实例正在运行。我的配置如下所示。

server {
    listen 80;
    listen 443;

    location / {
        ...
        proxy_pass http://127.0.0.1:8080;
        ...
        proxy_redirect http://127.0.0.1:8080 example.com;

    }
}

我有一些软件在 8080 中运行,我希望用户输入 example.com/somepath 并能够通过我的域重定向到根 127.0.0.1:8080。软件应该会收到所有不带/somepath 的网址,但浏览器的名称中仍应显示/somepath

我很新,很抱歉这个基本问题我找不到任何有关如何准确执行此操作的相关信息:我尝试重写规则并设置 location /mysoftware { 测试但没有运气。

【问题讨论】:

    标签: nginx configuration server


    【解决方案1】:

    客户端浏览器使用/somepath/...访问应用程序中的/...。这意味着nginx 在向上游传递之前必须重写 URI。

    proxy_pass 指令具有基本的重写功能。有关详细信息,请参阅this document。例如:

    location /somepath/ {
        proxy_pass http://127.0.0.1:8080/;
        ...
    }
    

    或者,您可以使用rewrite ... break 语句。有关详细信息,请参阅this document。例如:

    location /somepath {
        rewrite ^/somepath/?(.*)$ /$1 break;
        proxy_pass http://127.0.0.1:8080;
        ...
    }
    

    困难的部分是防止您的应用程序脱离/somepathproxy_redirect 指令可以处理来自应用程序的 3xx 响应。但是资源文件的位置(.css.js)和超链接的目标,可能会给不知道自己需要保留在子目录中的应用程序带来问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-08
      • 2020-07-24
      • 1970-01-01
      • 1970-01-01
      • 2012-01-30
      • 2013-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多