标签: proxypass

如何使用 nginx proxy_pass 删除路径

我在 上有一个正在运行的 Web 应用程序http://example.com/,并且想在http://example.com/en. 上游服务器proxy_pass似乎可以工作,但有一个问题:

upstream luscious {
 server lixxxx.members.linode.com:9001;
}

server {
  root /var/www/example.com/current/public/;
  server_name example.com;

  location /en {
    proxy_pass http://luscious;
  }
}
Run Code Online (Sandbox Code Playgroud)

打开时example.com/en,我的上游应用程序返回404 not found /en。这是有道理的,因为上游没有 path /en

proxy_path正确的解决方案吗?我应该重写“上游”以便它/en作为根路径监听吗?或者是否有指令允许我重写传递给上游的路径?

nginx path proxypass

128
推荐指数
4
解决办法
20万
查看次数

带有 SSL 的 Apache ProxyPass

我想通过非 SSL 站点代理来自 SSL 站点的请求。我的 Apache httpd.conf 如下所示:

<VirtualHost 1.2.3.4:80>
    ServerName foo.com
    ProxyPass / https://bar.com/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

因此,当我访问http://foo.com 时,我希望 apache 向https://bar.com发出请求并将其获取的页面发送给我。

相反,我收到了 500 错误,在错误日志中,我看到:

[error] proxy: HTTPS: failed to enable ssl support for 4.3.2.1:443 (bar.com)
Run Code Online (Sandbox Code Playgroud)

大概我在这里遗漏了一个指令。可能是哪个?

别介意安全隐患。我完全理解其中的风险。

ssl proxy proxypass apache-2.2

66
推荐指数
1
解决办法
18万
查看次数

Nginx 位置正则表达式不适用于代理传递

我正在尝试让这 2 个位置指令在 Nginx 中工作,但是在启动 Nginx 时出现了一些错误。

   location ~ ^/smx/(test|production) {
        proxy_pass   http://localhost:8181/cxf;
    }

    location ~ ^/es/(test|production) {
        proxy_pass   http://localhost:9200/;
    }
Run Code Online (Sandbox Code Playgroud)

这是我收到的错误:

nginx: [emerg] "proxy_pass" cannot have URI part in location given by regular expression, or inside named location, or inside "if" statement, or inside "limit_except" block
Run Code Online (Sandbox Code Playgroud)

有没有人觉得很熟悉?我在这里错过了什么?

nginx proxy regex proxypass

53
推荐指数
2
解决办法
8万
查看次数

代理通行证不起作用

我正在尝试让 ProxyPass 在我的 OpenSUSE 13.1 安装上工作。

我试过了:

a2enmod proxy
a2enmod proxy_http
a2enmod proxy_connect
systemctl restart apache2
systemctl reload apache2
Run Code Online (Sandbox Code Playgroud)

(所有组合语句都无济于事)。

我一遍又一遍地得到同样的错误:

SERVER:/etc/apache2 # apache2ctl start -f /etc/apache2/httpd-proxy.conf
AH00526: Syntax error on line 4 of /etc/apache2/httpd-proxy.conf:
Invalid command 'ProxyPass', perhaps misspelled or defined by a module not included in the server configuration
Run Code Online (Sandbox Code Playgroud)

httpd-proxy.conf 看起来像:

<VirtualHost *:80>
    DocumentRoot /srv/www/subsite
    ServerName www.site.com/subsite
    ProxyPass /subsite/ http://localhost:81
    ProxyPassReverse /subsite/ http://localhost:81
</Virtualhost>
Run Code Online (Sandbox Code Playgroud)

有谁知道如何让这个 ProxyPass 语句起作用?

proxy mod-proxy proxypass apache-2.2

36
推荐指数
1
解决办法
7万
查看次数

Nginx 代理域到另一个域,无需更改 URL

我的问题是主题。我有一个域,这是它的 nginx 配置:

server {
listen 80;
server_name connect3.domain.ru www.connect3.domain.ru;

access_log /var/log/nginx/connect3.domain.ru.access.log;
error_log /var/log/nginx/connect3.domain.ru.error.log;

root /home/httpd/vhosts/html;
index index.html index.htm index.php;

location ~* \.(avi|bin|bmp|css|dmg|doc|docx|dpkg|exe|flv|gif|htm|html|ico|ics|img|jpeg|jpg|js|m2a|m2v|mov|mp3|mp4|mpeg|mpg|msi|pdf|pkg|png|pps|ppt|pptx|ps|rar|rss|rtf|swf|tif|tiff|txt|wmv|xhtml|xls|xml|zip)$ {
    root /home/httpd/vhosts/html;
    access_log off;
    expires 1d;
}

location ~ /\.(git|ht|svn) {
    deny all;
}

location / {
    #rewrite ^ http://connect2.domain.ru/;
    proxy_pass http://127.0.0.1:8080/;
    proxy_redirect off;
    proxy_hide_header "Cache-Control";
    add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";
    proxy_hide_header "Pragma";
    add_header Pragma "no-cache";
    expires -1;
    add_header Last-Modified $sent_http_Expires;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Run Code Online (Sandbox Code Playgroud)

我需要将connect3.domain.ru 主机代理到connect2.domain.ru,但浏览器地址栏中的URL …

nginx proxypass

29
推荐指数
3
解决办法
9万
查看次数

为 jboss/tomcat 配置 nginx

为了使用 Apache 将流量传递到端口 80 上的 JBoss/TomCat,我们曾经安装和配置mod_jk.

是否有 nginx 的等价物?基本上希望所有端口 80 流量都传递给 jboss。

tomcat nginx jboss proxypass

27
推荐指数
2
解决办法
5万
查看次数

如何使用 nginx 反向代理正确处理相对 url

当然,我不是第一个尝试从 为域提供服务example.com的人example.net/bbb,但我还没有找到解决方案。

我的 NGINX 配置遵循指导方针,看起来像这样:

server {
    listen 80;
    server_name example.net;
    root /path/to/aaa;

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

    location / {
        try_files $uri $uri/ /index.html;
    }
    location ~ \.(svg|ttf|js|css|svgz|eot|otf|woff|jpg|jpeg|gif|png|ico)$ {
        access_log off;
        log_not_found off;
        expires max;
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以设法渲染example.comin的根,example.net/bbb但是:

问题 1

example.net/bbb/some/path预期和不工作index.htmlexample.net呈现。

问题 2

中的任何资产example.com/assets都会给出 404,因为浏览器会查找example.net/assets. 如果我能在不到处放置绝对路径的情况下解决这个问题,那就太好了。

nginx reverse-proxy proxypass

22
推荐指数
1
解决办法
4万
查看次数

为什么在启动 Apache 2.2 服务器时会收到“无效命令 'ProxyPass'”错误?

我在 Apache 2.2 中无法使用代理

当我尝试启动它时,出现Invalid command 'ProxyPass'错误。这将表明proxy_http_module没有被加载。但是,当我查看调试时,它似乎就在那里。例如,

E:\Apache\bin>httpd -e debug
[Fri Aug 21 15:48:55 2015] [debug] mod_so.c(246): loaded module actions_module
...
[Fri Aug 21 15:48:55 2015] [debug] mod_so.c(246): loaded module proxy_ajp_module
[Fri Aug 21 15:48:55 2015] [debug] mod_so.c(246): loaded module proxy_http_module   <-----
[Fri Aug 21 15:48:55 2015] [debug] mod_so.c(246): loaded module setenvif_module
....
[Fri Aug 21 15:48:55 2015] [debug] mod_so.c(246): loaded module jk_module
[Fri Aug 21 15:48:55 2015] [notice] Disabled use of AcceptEx() WinSock2 API
Syntax …
Run Code Online (Sandbox Code Playgroud)

proxy proxypass apache-2.2

21
推荐指数
1
解决办法
4万
查看次数

可以同时使用 Redirect 和 Proxypass

我在 CentOS 上使用 Apache 2.2.15 为 TomCat 应用程序提供 SSL。

ProxyPass / http://127.0.0.1:8090/ connectiontimeout=300 timeout=300
ProxyPassReverse / http://127.0.0.1:8090
Run Code Online (Sandbox Code Playgroud)

这很好用,一切都很好;但是,我想添加以下行:

Redirect permanent /broken/page.html https://www.servername.com/correct/page.html
Run Code Online (Sandbox Code Playgroud)

在上面处理 TomCat 应用程序本身中的错误之前。然而,它似乎并没有像我期望的那样工作(即,它似乎什么都不做,什么也不改变)。是否可以以这种方式使用重定向?不幸的是,我无法编辑该应用程序。

tomcat redirect proxypass apache-2.2

19
推荐指数
2
解决办法
2万
查看次数

ProxyPass:将目录 URL 重定向到非标准端口

我一直在搜索谷歌,但在找到答案方面没有取得多大成功。我在 Ubuntu 上运行服务器,并且安装了使用各种非标准端口的程序。每个都使用不同的端口,在我的情况下它们是 9090、9091、9092、9093 和 9094。我设置了一个 apache 服务器并拥有一个域名,现在可以访问我的服务器,而不必输入我的 IP 地址。我正在寻找的是一种创建可以指向我列出的不同端口的目录的方法。我想要这样的东西:

https://www.mydomain.com/app1
https://www.mydomain.com/app2
http://www.mydomain.com/app3

有些端口通过 SSL,有些则不是,我只是将它们按顺序排列 (9090-9094) 以方便我使用。我想让 /app1 指向 SSL 端口 9090,/app2 指向 SSL 端口 9091,/app3 指向非 SSL 端口 9092。有没有一种简单的方法可以做到这一点?我已经尝试根据其他帖子添加 ProxyPass 等,但没有任何效果。我需要添加一个新站点吗?

此外,如果这涉及编辑文件(我希望它会这样做),如果您能列出文件的默认位置以及添加内容的位置,将不胜感激。我一直看到帖子说要添加 ProxyPass,所以我只是假设它在 VirtualHost 内部,但我并不完全确定。基本上,我对网络服务器设置知之甚少,我需要被这样对待。

对于任何不正确的标签,我深表歉意,感谢您花时间阅读帖子以及您可以提供的任何帮助。

编辑:为了澄清起见,应用程序已经可以通过https://www.mydomain.com:9090等访问。我只想使用一种方法来https://www.mydomain.com/appName访问这些应用程序发布的相同位置/页面。

编辑 2:来自 /etc/apache2/sites-available/default

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options …
Run Code Online (Sandbox Code Playgroud)

proxypass apache-2.2 ubuntu-12.10

16
推荐指数
1
解决办法
4万
查看次数