我在 上有一个正在运行的 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
作为根路径监听吗?或者是否有指令允许我重写传递给上游的路径?
我想通过非 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)
大概我在这里遗漏了一个指令。可能是哪个?
别介意安全隐患。我完全理解其中的风险。
我正在尝试让这 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)
有没有人觉得很熟悉?我在这里错过了什么?
我正在尝试让 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 语句起作用?
我的问题是主题。我有一个域,这是它的 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 …
为了使用 Apache 将流量传递到端口 80 上的 JBoss/TomCat,我们曾经安装和配置mod_jk
.
是否有 nginx 的等价物?基本上希望所有端口 80 流量都传递给 jboss。
当然,我不是第一个尝试从 为域提供服务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.com
in的根,example.net/bbb
但是:
example.net/bbb/some/path
预期和不工作index.html
的example.net
呈现。
中的任何资产example.com/assets
都会给出 404,因为浏览器会查找example.net/assets
. 如果我能在不到处放置绝对路径的情况下解决这个问题,那就太好了。
我在 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) 我在 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 应用程序本身中的错误之前。然而,它似乎并没有像我期望的那样工作(即,它似乎什么都不做,什么也不改变)。是否可以以这种方式使用重定向?不幸的是,我无法编辑该应用程序。
我一直在搜索谷歌,但在找到答案方面没有取得多大成功。我在 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)