如果我有多个上游反向代理的 nginx 负载平衡,并且其中一个出现故障,我的用户会收到 502,还是由 nginx 负责重新路由到已启动的上游?
我的网络上有 2 台服务器:
一台 linux 机器 (192.168.0.2) 的网站在端口 8181 上侦听 service1.domain.com 一台 Windows 机器 (192.168.0.3) 的网站在端口 8080 上侦听 service2.domain.com
我想设置一个 nginx 反向代理,以便我可以像这样路由请求:
service1.domain.com --> 192.168.0.2:8181 with host header service1.domain.com
service2.domain.com --> 192.168.0.3:8080 with host header service2.domain.com
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下配置:
### General Server Settings ###
worker_processes 1;
events {
worker_connections 1024;
}
### Reverse Proxy Listener Definition ###
http {
server {
listen 80;
server_name service1.domain.com;
location / {
proxy_pass http://192.168.0.2:8181;
proxy_set_header host service1.domain.com;
}
}
server {
listen 80;
server_name service2.domain.com;
location …Run Code Online (Sandbox Code Playgroud) 我有一个ASP.NET网站,通常通过HTTPS在IIS上运行.现在我想把它放在一个反向代理后面,它会为我做SSL终止.问题是来自反向代理的请求是在HTTP:80上,当我按照惯例创建重定向响应时,响应的Location标头设置为http://...而不是https://...
我知道反向代理X-Forwarded-Proto在标题中传递,我可以在创建重定向响应和重定向URL时检查该标头.但是,如果可能的话,我希望避免为X-Forwarded-Whatever代码周围的所有内容进行检查,并在编码时再考虑一下,并且还必须仔细检查当代理部署在代理后面时是否仍然有效.
我目前通过http://www.example.net:6667在我的 VPS 上访问 ZNC ,但我正在尝试配置 Nginx,因此它只能通过http://znc.example.net访问。
我按照官方 ZNC wiki 上的说明进行操作,但是尽管尝试了很多小时的不同方法,我还是继续收到 Firefox 的“找不到服务器”错误。
里面的一个server块/etc/nginx/sites-available/example.net如下:
server {
listen 80;
server_name znc.example.net;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:6667/;
}
}
Run Code Online (Sandbox Code Playgroud)
TrustedProxy = 127.0.0.1我的~/.znc/configs/znc.conf文件中也有,那么我哪里出错了?谢谢。
我希望能够在多个不同的目录(exp:/example1,/example2...等)上运行扭曲的服务器,所以我想我会使用flask.这是我到目前为止:
from flask import Flask
from twisted.web.server import Site
from twisted.web.wsgi import WSGIResource
from twisted.internet import reactor
from twisted.web.proxy import ReverseProxyResource
from twisted.web.resource import Resource
app = Flask(__name__)
@app.route('/example1')
def index():
return 'My Twisted Flask'
flask_site = WSGIResource(reactor, reactor.getThreadPool(), app)
root = Resource()
root.putChild('my_flask', flask_site)
site_example = ReverseProxyResource('www.example.com', 80, ''.encode('utf-8'))
root.putChild('example1', site_example)
reactor.listenTCP(80, Site(root))
reactor.run()
Run Code Online (Sandbox Code Playgroud)
唯一的问题是它不起作用,我不确定我做错了什么.我感谢任何帮助,谢谢!
我需要使用 nginx 实现以下测试用例:
www.example.com/api/应该重定向到ABC.com/api,而www.example.com/api/site/login应该重定向到XYZ.com/api/site/login
但是在浏览器中,用户应该只看到www.example.com/api....(而不是重定向的 URL)。
请让我知道如何实现这一点。
在我们当前的架构中,我们有两个 apache 前端服务器,在它们前面,我们有一个 nginx 负载均衡器。在它前面是一个 nginx 反向代理。
我的问题是我试图通过反向代理运行 Apache Zeppelin,但我在 websockets 方面遇到了一些问题。
我收到这样的错误: 400 HTTP method GET is not supported by this URL
我为 Zeppelin 添加我的反向代理配置:
error_log /var/log/nginx/nginx_error.log warn;
server {
listen 80;
server_name localhost;
location /zeppelin/ {
proxy_pass http://zeppelin:8080/;
proxy_http_version 1.1;
proxy_set_header Upgrade websocket;
proxy_set_header Connection upgrade;
}
# fallback
location / {
return 301 http://ci.blablalablab.com/app/;
}
}
Run Code Online (Sandbox Code Playgroud)
Zeppelin 在 docker 容器内运行,我公开了 8080 端口,它的主机名是:zeppelin。
如果您对架构有任何疑问,请随时提出。
非常感谢你们 !
我安装了phpMyAdmin docker镜像并使用
# docker run --name phpmyadmin -d --link mariadb:db -p 8081:80 -e PMA_ABSOLUTE_URI=http://servm3/pma --restart unless-stopped phpmyadmin/phpmyadmin
Run Code Online (Sandbox Code Playgroud)
访问http:// servm3:8081可以正常工作。变量PMA_ABSOLUTE_URI用于反向代理,如docker 页面所示。
然后,我设置了nginx(本地安装,不在docker内部)以充当反向代理(适用于鳄梨酱等其他一些应用程序)。
在我的nginx.conf中,我有:
location /pma/ {
proxy_pass http://localhost:8081/;
proxy_buffering off;
}
Run Code Online (Sandbox Code Playgroud)
访问http:// servm3 / pma会在浏览器选项卡上显示收藏夹图标,但是仅显示空白页而不是登录页面。删除前面的“ /”并重新启动nginx只会得到404。
# docker logs phpmyadmin
Run Code Online (Sandbox Code Playgroud)
除了php和nginx服务的启动信息外,什么都没有显示,与phpmyadmin没有任何关系。
本地nginx访问日志显示几个304和404代码以及大约200个代码,错误日志不存在。详细的日志可以在pastebin上找到。
我希望有人能够告诉我如何使Nginx用作phpMyAdmin docker容器的反向代理。
如果缺少一些重要信息,请告诉我。
我在一台虚拟机上运行了 Nginx/openresty 和其他一些服务。基本上 VM 接受 Openresty 上的请求,然后 openresty 将请求转发给适当的服务。例如,下面的请求分别转发到 ServiceA、ServiceB 和 ServiceC。它工作正常。
现在我需要公开一个新端点,该端点可以从所有服务 A、B 和 C 获取响应,然后返回一个合并的响应。
我不能在我的位置使用多个 proxy_pass,有人可以建议我如何实现吗?例如
http://server:80/services/refALL --> 返回来自 A、B 和 C 服务的合并响应。
我有几个应用程序服务器(通过PM2)运行多个Node应用程序。
我有一台NGINX服务器,该服务器具有域的SSL证书和Node应用程序的反向代理。
在NGINX配置文件中,我使用如下的位置块设置域:
server {
listen 443 ssl;
server_name
geolytix.xyz;
ssl_certificate /etc/letsencrypt/live/geolytix.xyz/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/geolytix.xyz/privkey.pem;
location /demo {
proxy_pass http://159.65.61.61:3000/demo;
proxy_set_header HOST $host;
proxy_buffering off;
}
location /now {
proxy_pass https://xyz-heigvbokgr.now.sh/now;
proxy_set_header HOST $host;
proxy_buffering off;
}
}
Run Code Online (Sandbox Code Playgroud)
这仅适用于应用程序服务器。Zeit Now部署的代理产生错误的网关。如果我转到部署的Zeit Now地址,则应用程序本身将按预期工作。
有人知道我是否可能会缺少一些设置以代理Zeit Now吗?
reverse-proxy ×10
nginx ×8
apache ×1
asp.net ×1
cross-domain ×1
docker ×1
flask ×1
iis ×1
lua ×1
openresty ×1
phpmyadmin ×1
python ×1
python-3.x ×1
ssl ×1
twisted ×1
vercel ×1
websocket ×1