我有一个Apache 2前端,它提供两种请求:
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的根.
我正在开发一个Rails应用程序,它使用API后端来处理用Sinatra编写的AJAX请求.
API与Rails分开运行:
Rails: localhost:3000
API: localhost:9393
在生产中,我们将使用nginx代理对API的请求.
问题是我们在开发模式下没有nginx,我们使用的是瘦身.所以我需要某种Rack中间件,我可以在开发模式中添加它来代理我的请求.
有人能给我一个如何做到这一点的例子吗?
我有一个在heroku上运行的rails应用程序,例如myapp.herokuapp.com.
现在,我想从反向代理myapp.heroku.com/proxy/到somewhereelse.com/(即:myapp.heroku.com/proxy/stuff反向proxifed到somewhereelse.com/stuff)是可能在Heroku?怎么做到这一点?
我试图弄清楚如何使用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安装.
我正在阅读关于Kestrelweb服务器的asp.net core app具体内容in-process http server和reverse proxy.
作为季节性的Web开发人员,我无法理解背后的想法:
in-process http server核心应用程序中实现的相关性?web server?http request?reverse proxy以及Kestrel关联/通信(1:n或1:1)?文件:
# 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) 我的服务器上有 3 个不同的 docker 容器在端口上运行 -
我想配置我的服务器,以便每当请求命中以下路径时,它应该被重定向到相关容器 -
我已经完成将 /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) 我在两台独立的物理机上设置了两台 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) 假设我当前的公共 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) 我想在操作请求和响应 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 错误)。