标签: reverse-proxy

如何设置在Apache反向代理后面的子目录上播放?

我有一个Apache 2前端,它提供两种请求:

  • 对根文件夹的请求(例如http://mysite.com/http://mysite.com/help)由apache本身(PHP/Wordpress)提供.
  • 对'/ playapp'子文件夹的特定请求将转发到Play!通过mod-proxy通过反向代理:

MOD-proxy.conf

ProxyPass        /playapp/ http://localhost:9000/
ProxyPassReverse /playapp/ http://localhost:9000/
Run Code Online (Sandbox Code Playgroud)

最终结果是请求说http://mysite.com/playapp/Controller/action到达Play服务器http://localhost:9000/Controller/action

现在,玩!正确提供页面,但所有链接,包括javascript,css和其他页面的链接都被破坏.例如,如果视图使用:

#{stylesheet 'style.css' /}
Run Code Online (Sandbox Code Playgroud)

然后渲染的结果是

<link rel="stylesheet" type="text/css" href="/public/stylesheets/style.css" charset="utf-8" ></link>
Run Code Online (Sandbox Code Playgroud)

所以最终用户尝试抓取http://mysite.com/public/stylesheets/style.css,返回404,因为它实际上不是Play的一部分!应用程序.

在这里配置Apache + Play的正确方法是什么?

我正在寻找的结果是Play!在最终呈现的HTML中返回诸如此类的URL(或者可能为Apache重写URL):http://mysite.com/playapp/public/stylesheets/style.css

此外,我确实需要一些能力链接Play应用程序之外.例如,我希望将主路由(/)映射到我的绝对根(http://mysite.com/),而不是Play的根.

java apache reverse-proxy playframework

6
推荐指数
1
解决办法
7361
查看次数

如何使用Rack Middleware代理AJAX请求?

我正在开发一个Rails应用程序,它使用API​​后端来处理用Sinatra编写的AJAX请求.

API与Rails分开运行:

Rails: localhost:3000
API: localhost:9393

在生产中,我们将使用nginx代理对API的请求.

问题是我们在开发模式下没有nginx,我们使用的是瘦身.所以我需要某种Rack中间件,我可以在开发模式中添加它来代理我的请求.

有人能给我一个如何做到这一点的例子吗?

ajax reverse-proxy ruby-on-rails sinatra ruby-on-rails-3

6
推荐指数
1
解决办法
1382
查看次数

向heroku添加反向代理

我有一个在heroku上运行的rails应用程序,例如myapp.herokuapp.com.

现在,我想从反向代理myapp.heroku.com/proxy/somewhereelse.com/(即:myapp.heroku.com/proxy/stuff反向proxifed到somewhereelse.com/stuff)是可能在Heroku?怎么做到这一点?

reverse-proxy ruby-on-rails heroku

6
推荐指数
1
解决办法
3724
查看次数

url在应用程序池中重写和ARR

我试图弄清楚如何使用URL重写和应用程序请求路由(ARR)来重写同一服务器上的不同应用程序池.

在简化版本中,这就是我所拥有的:REST服务API使用2个虚拟目录Service.A和B实现,因此虚拟目录是访问资源A和B的URL的一部分

获取[https://] api.mycompany.com/Service.A/A

获取[https://] api.mycompany.com/Service.B/B

我想要实现的是为没有虚拟目录名的api提供一个外部URL,显然不需要进行代码重构(合并解决方案文件和构建)

获取[https://] api.mycompany.com/A

获取[https://] api.mycompany.com/B

我实现了一个url重写规则来匹配路径中的/ A并用/Service.A/A替换,在默认网站级别的web.config中使用这样的代码,这很好.

    <rewrite>

            <rule name="AddServicePrefix" enabled="true">

                <match url="^A[/]?.*" />

                <action type="Rewrite" url="/Service.A/{R:0}" />

            </rule>

    </rewrite>
Run Code Online (Sandbox Code Playgroud)

问题是,当我为Service.A(从默认网站的应用程序池)分配不同的应用程序池时,这将立即失败并出现403错误,但这是我们要求运行应用程序/虚拟目录的要求在不同的应用程序池下,以最小化任何池出现故障或回收时的影响.

我做了一些研究.下面的上一篇文章基本上说"如果你想将请求重新路由到另一个应用程序池,你必须跳一跳,无论是跳过winsock还是命名管道还是其他什么"没有太多细节.我也通过ARR指南,但无法弄清楚如何在这种情况下使用ARR.

http://forums.iis.net/t/1151510.aspx?Rewrite+across+application+pools+

有帮助吗?建议和评论我是否朝着正确的方向前进?

谢谢!

哦,忘记提及环境:目前在开发环境中,Windows 7上的IIS 7.5,Url Rewrite 2.0和ARR 3.0,由Web Platform Installer安装.

iis reverse-proxy url-rewriting arr

6
推荐指数
0
解决办法
1090
查看次数

Asp.Net Core中的反向代理和进程内HTTP服务器

我正在阅读关于Kestrelweb服务器的asp.net core app具体内容in-process http serverreverse proxy.

作为季节性的Web开发人员,我无法理解背后的想法:

  • in-process http server核心应用程序中实现的相关性?
  • 反向代理方法的重要性超过任何典型web server
  • 除了转发之外,问题的类型是否在asp.net核心世界中进行反向代理解决http request
  • 如果要将asp.net核心应用程序部署在容器中,如何reverse proxy以及Kestrel关联/通信(1:n1:1)?

asp.net proxy reverse-proxy asp.net-core-mvc asp.net-core

6
推荐指数
1
解决办法
2202
查看次数

用于 uvicorn 的 unix 套接字上的 Nginx 反向代理不起作用

文件

# main.py:
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}
Run Code Online (Sandbox Code Playgroud)

——

# nginx.conf:
events {
    worker_connections 128;
}
http{
    server {
        listen 0.0.0.0:8080;
        location / {
            include uwsgi_params;
            uwsgi_pass unix:/tmp/uvi.sock;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

——

# Dockerfile
FROM python:3

COPY main.py .

RUN apt-get -y update && apt-get install -y htop tmux vim nginx

RUN pip install fastapi uvicorn

COPY nginx.conf /etc/nginx/
Run Code Online (Sandbox Code Playgroud)

设置

docker build -t nginx-uvicorn:latest .
docker run -it --entrypoint=/bin/bash --name …
Run Code Online (Sandbox Code Playgroud)

python reverse-proxy nginx fastapi uvicorn

6
推荐指数
1
解决办法
6474
查看次数

通过 Nginx 基于路径路由到同一台服务器上的不同容器

我的服务器上有 3 个不同的 docker 容器在端口上运行 -

  1. 容器 1 - 本地主机:5000
  2. 容器 2 - 本地主机:8000
  3. 容器 3 - 本地主机:9000

我想配置我的服务器,以便每当请求命中以下路径时,它应该被重定向到相关容器 -

  1. 本地主机/容器 1 -> 本地主机:5000
  2. 本地主机/容器 2 -> 本地主机:8000
  3. 本地主机/容器 3 -> 本地主机:9000

我已经完成将 /container1 重定向到 localhost:5000。但是,它不提供容器 1 中托管的任何静态文件

我的 nginx.conf 文件 -


#user  nobody;
worker_processes  1;

http {

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location /container1/ {
            proxy_pass http://127.0.0.1:5000;
        }

        #error_page  404              /404.html;

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html; …
Run Code Online (Sandbox Code Playgroud)

reverse-proxy nginx docker

6
推荐指数
0
解决办法
1532
查看次数

Apache 服务器反向代理另一个 apache 服务器,得到“AH01102:从远程服务器读取状态行时出错”

我在两台独立的物理机上设置了两台 apache 服务器。我目前的设置是:

                      Apache 1 (Reverse Proxy) <===> Apache 2
Run Code Online (Sandbox Code Playgroud)

两个 apache 服务器版本都在Apache/2.4.29 (Ubuntu)运行Ubuntu 18.04.4 LTS并且它们的/etc/apache2/apache.conf文件是相同的。

启用 Apache 1 站点的配置:

<VirtualHost *:80>
        ServerName subdomain.domain.tld
        ServerAlias www.subdomain.domain.tld

        ServerAdmin webmaster@domain.tld
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>

        ProxyRequests off
        ProxyPreserveHost On
        ProxyPass /maintenance_page !
        ProxyPass / http://[apache2-ip-address]:27300/ 
        ProxyPassReverse / http://[apache2-ip-address]:27300/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

启用 Apache 2 站点的配置:

<VirtualHost *:27300>
        ServerName subdomain.domain.tld
        ServerAlias www.subdomain.domain.tld

        ServerAdmin webmaster@domain.tld
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog …
Run Code Online (Sandbox Code Playgroud)

apache proxy reverse-proxy http

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

如何正确设置基本的 traefik 反向代理?

假设我当前的公共 IP 是101.15.14.71,我有一个名为的域example.com,我使用 cloudflare 配置了该域,并且我创建了多个指向我的公共 ip 的 DNS 条目。

例如:

1) new1.example.com - 101.15.14.71
2) new2.example.com - 101.15.14.71
3) new3.example.com - 101.15.14.71
Run Code Online (Sandbox Code Playgroud)

现在,这是我的示例项目结构,

??? myapp
?   ??? app
?   ?   ??? main.py
?   ??? docker-compose.yml
?   ??? Dockerfile
??? myapp1
?   ??? app
?   ?   ??? main.py
?   ??? docker-compose.yml
?   ??? Dockerfile
??? traefik
    ??? acme.json
    ??? docker-compose.yml
    ??? traefik_dynamic.toml
    ??? traefik.toml
Run Code Online (Sandbox Code Playgroud)

这里我有两个 fastAPI(即 myapp、myapp1)

这是我在myapp 和 myapp1中的main.py中的示例代码,它完全相同,但返回 staement 不同,仅此而已

from fastapi import …
Run Code Online (Sandbox Code Playgroud)

reverse-proxy docker docker-compose traefik fastapi

6
推荐指数
1
解决办法
245
查看次数

Nginx 入口和出口代理通行证

我想在操作请求和响应 URI 的同时使用入口和出口的(反向)代理转发流量。

场景是这样的:

来自互联网的入口 请求(请求 uri 为“/test/”)进入端口 8888 上的 ec2 实例,然后进入侦听此端口的 Nginx docker 容器,并在“替换”时代理将其传递到第二个 docker 容器请求 uri 为端口 12345 上的“/”(然后在容器内将其转发到端口 8787 到 Web 应用程序)。

出口 从第二个 docker 容器返回到 Nginx 容器的响应必须再次“重建”到原始 uri(“/test/”),并作为响应发送回原始客户端。

我想我通过像这样配置 Nginx 来获得入口部分:

server {
    listen 8888;
    server_name 172.17.0.1;
    location / {
        proxy_pass "http://172.17.0.1:12345";
    }
}
Run Code Online (Sandbox Code Playgroud)

但它似乎不太正确,因为我认为它应该使用 Nginx 本身(172.17.0.3)作为“server_name”并使用 Web 应用程序(172.17.0.2)作为上游,但这不起作用(502 错误)。

我正在附上此场景的图像,谢谢。 在此输入图像描述

containers reverse-proxy nginx docker nginx-reverse-proxy

6
推荐指数
1
解决办法
757
查看次数