我使用Nginx 1.10.1来为我的APP平衡Websocket连接。 例如,应用程序A (多进程)通过Nginxbuild立到B1 , B2 Websocket连接,以便连接可以平衡。 使用它时,有时即使我的应用程序通过Websocket发送消息,终点( B1或B2 )不会收到任何消息,并在一段时间后Nginx打印错误日志消息recv() failed (110: Connection timed out) while proxying upgraded connection 。 以下是我对Nginxconfiguration。 为什么会发生,如何解决? 像networking连接超时会导致这种情况? worker_processes 2; error_log /app_log/sangmin/nginx/error.log info; pid /app_log/sangmin/nginx/nginx.pid; events { worker_connections 1024; use epoll; } http { map $http_upgrade $connection_upgrade { default upgrade; '' close; } client_body_buffer_size 5m; access_log /app_log/sangmin/nginx/access.log; upstream s2s_host{ hash […]
我想创build一个Vagrant开发环境,一个开发者可以访问dev.example.com ,stream浪的机器会向dev.example.com发出同样的请求,除了过滤掉一些文件,比如app.js和main.css并为当地的FS提供服务。 有太多的api依赖于地区的顺利发展。 这个有可能? 任何提示或build议也将有所帮助
正如你可以在主题中看到,我有一个小问题运行反向代理HTTPSstream量到第二台服务器(在网关/防火墙后面的同一networking)在Plesk: build立: 我有一台服务器运行Plesk(与Apache)。 在那里,我想redirect一个子域(xyz.domain.com)的HTTPSstream量到第二个服务器(IP 192.168.3.10),它与Plesk服务器(IP 192.168.3.2)和网关(IP 192.168.3.1)到互联网。 在第二台服务器上有一个运行在Apache反向代理之后的YouTrack实例,允许通过http / https进行连接。 它以HTTP的以下方式进行configuration: <VirtualHost *:80> ServerName xyz.domain.com Redirect permanent / https://xyz.domain.com.de </VirtualHost> 和HTTPS: <IfModule mod_ssl.c> <VirtualHost _default_:443> SSLEngine on SSLCertificateFile /etc/ssl/certs/domain.crt SSLCertificateKeyFile /etc/ssl/private/domain.key SSLCertificateChainFile /etc/ssl/bundles/root_bundle.crt <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> RewriteEngine on AllowEncodedSlashes on ProxyRequests off ServerName xyz.domain.com ProxyPass / http://127.0.0.1:8084/ ProxyPassReverse […]
我们正在考虑在移动客户端部署SfB Frontend和Edge。 我们只有两台新服务器的容量,所以我们不能放置专门的反向代理服务器。 我们可以简单地使用NAT来解决这个问题吗? 即在我们的防火墙设备上,NAT 443到4443用于到外部Web服务的前端的外部连接? 如果是这样 – 我将分配给前端的外部Web服务IIS站点以确保通过有效证书名称进行SSL连接的证书? 由于目前使用内部签署的证书,我是否会将其更改为具有所有适当名称的公共证书,否则会造成问题?
我有一个域(比如说example.com ),一个静态网站项目(由jekyll生成)和一个Azure应用程序服务站点(ASP.net 4.6 MVC 5)。 (我认为所涉及的技术并不是真的有什么后果,但是我列举了它们,以防万一它有帮助。) 我的主要问题是,我想提出一种方法来回应域名example.com ,但有stream量首先到静态站点,否则到App服务。 如果在应用服务上找不到内容,则它将负责生成404。 把它放在一条线上的最好的方法是我想把这些网站“叠”起来。 这里有一些更多的标准和想法: 我想避免将两套资产和代码结合在一起,因为我们将利用所有位的略微不同的托pipe和部署configuration。 如果可能的话,这将不会诉诸于子域名,path前缀或redirect。 我的直觉告诉我,这里可能有一些反向代理设置,我只是不太熟悉的选项知道一个好方法 我可以使用任何特定于Azure的工具,如应用程序网关等。 如果上述不可能的话,我已经有了一些妥协。 我只是在消除我的选项的过程中,以域名,slu and和品牌的可取性和清洁。
我试图使用nginx作为反向代理( 服务器A )到我的WordPress服务器( 服务器B )托pipe使用Nginx。 我正在试图设置我的url在一个子目录格式,如example.com/blog 它有点作品,但有一些问题。 服务器A具有LetsEncrypt SSL证书,因此它会在所有路由上强制使用https 。 这是一个问题,因为我的wordpress应用程序正在http上加载.js&.css文件。 成功login后,不是redirect到example.com/blog/wp-admin ,而是转到example.com/wp-admin 我的服务器一个 nginx conf文件,包含相应的位置块, location /blog { rewrite ^/blog/(.*)$ /$1 break; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_pass http://ip-address-for-server-b; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } 我的服务器B的 nginx conf文件 server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.php index.html index.htm […]
我想build立一个反向代理的nginx背后的Synapse实例。 由于nginx是使用HTTPS的TLS设置的,所以这个有些过时的blogpostbuild议使用nginx vhost中已经使用的TLS东西来设置matrix突触,因为这是其他服务器在与我的实例交谈时将看到的TLS内容。 到目前为止,我已经成功地设置了服务器,以便它自己运行,并且此实例上的用户可以相互交谈。 主要的问题是服务器 – 2 – 服务器通信,或者像matrix家伙称之为“联邦”。 这是我在matrix突触中的TLS设置: tls_certificate_path: "/var/lib/acme/live/matrix.simonszu.de/fullchain" # PEM encoded private key for TLS tls_private_key_path: "/etc/matrix-synapse/homeserver.tls.key" # PEM dh parameters for ephemeral keys tls_dh_params_path: "/etc/ssl/dhparams/matrix.simonszu.de_dhparams.pem" # Don't bind to the https port no_tls: True 上面的tls_private_key_path表明,你可以完全注释掉tls_private_key_path ,因为你已经把no_tls设置为True(因为每个TLS的东西都是由nginx实例pipe理的)。 我已经注意到,这并不是真正的工作,因为在这种情况下,matrix突触将在隐蔽的地方search密钥文件。 由于密钥pipe理是通过acmetool从Let's Encrypt获取证书来完成的,并且如果对密钥文件设置了除0600之外的其他任何文件权限,则自动续订过程将失败,因此我无法链接到与证书关联的密钥文件。 但是由于TLS的东西无论如何都由nginx来pipe理,所以synapse只需要这个证书用于其他突触实例的指纹显示,并且有效地忽略了key_path。 我已经确定这个突触实例可以通过浏览器访问,并且可以手动获取签名。 但不幸的是,与其他实例进行通信时的初始握手失败。 我有自己的突触实例(不是在一个反向代理后面)访问另一个主机,我可以在握手过程中查看它的日志文件。 我的日志文件中出现以下错误: SynapseError: 401: No key for matrix.simonszu.de […]
我想知道是否有一种方法来设置NGINX反向代理服务器绕过404(或其他错误代码)响应的列表中的服务器。 我有一个集群映像板,通过6个不属于群集的专用服务器进行批量导入,因为它们不使用共享存储。 将映像导入到实时系统时,作为群集一部分的其他服务器显然将响应404,因为它们无法访问驻留在导入服务器上的文件。 有没有一种方法可以将它们添加到NGINX的列表中,它会忽略那些使用404响应的服务器,并使用正确响应的服务器? 我的NGINXconfiguration反向代理: upstream sequenzia-press { # server node-end1:80; server node1:80; server node2:80; server node3:80; server node4:80; } upstream sequenzia-cpu { server node1:80; server node2:80; server node3:80; server node4:80; } server { listen 80; root /var/www/html; server_name sequenzia.acr.moe; rewrite ^ https://$server_name$request_uri? permanent; } server { listen 443 ssl; root /var/www/seq; server_name sequenzia.acr.moe; ssl_certificate […]
反向代理专家 目前,我正面临着从NGINX移植到APACHE的挑战。 我不是很有经验,尽pipe我设法编写APACHE,虽然我仍然坚持使用正确的指令(mod_proxy和mod_rewrite),以便它可以作为NGINX上的configuration。 下面是NGINX和APACHE的代码。 NGINX #authentication server upstream auth_servers { server 5.5.5.120:80; } upstream gate_servers { server 5.5.5.121:8020; } server { listen 443; server_name abc.example.com; ##########################SSL config file######################## ssl on; ssl_certificate /etc/nginx/ssl/abc.example.com/server.crt; ssl_certificate_key /etc/nginx/ssl/abc.example.com/server_2048.key; ssl_session_timeout 90; ssl_ciphers EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on; ssl_protocols TLSv1.2 TLSv1.1 TLSv1; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For […]
我想为给定的用户对不同的SSH服务器执行基于pubkey的身份validation,而不修改客户端configuration,但允许修改服务器软件。 还有几个类似的问题。 这和这个请求基于主机名而不是用户名的调度。 这个和这个尝试按用户名分配,但是他们只有第一个ssh会话导致调用第二个ssh命令的答案,所以如果启用了代理转发,这将只在最终目的地使用公共密钥。 这个问题在如何达到既定目标方面更具体。 图层 我已阅读RFC 4251第1节 。 据此,SSH堆栈中有三层。 TRANS(传输)层提供完整性和服务器authentication。 USERAUTH(用户authentication)层进行用户authentication,CONNECT(连接)层复用实际的有效载荷数据。 所以我想要一个人在TRANS层的中间拦截,同时转发USERAUTH和CONNECT层。 client proxy server CONNECT X———–X USERAUTH X———–X TRANS X—X X—X TCP X—X X—X 由于TRANS层服务器authentication,客户端显然会看到代理的公钥,这在我的应用程序中是可以接受的。 根据RFC 4252第1节 ,USERAUTH层从TRANS层接收会话标识符。 这意味着实际的服务器可能需要一些额外的function,所以它可以使用客户端和代理之间协商的会话标识符,而不是使用代理服务器自己协商的那个。 可以这样做吗? 有没有已知的这种scheme的实施? 还是有一些我忽略了一些原因,即使一个人可以控制代理服务器和服务器上运行的软件,为什么不能工作呢? 应用 各种服务都可以作为随时可用的Docker镜像,通过这种或那种方式提供git通过SSH访问数据。 通常所有访问都是使用一个帐户完成的,使用公钥来实际区分用户。 所以通过公钥是至关重要的。 可以使用不同的端口公开这些服务。 但是使用特权端口以外的服务可能被认为是不好的风格,使用无特权的端口作为安全风险,并且整体上用户名比端口号更难忘。 此外,无论如何,用户名是必需的,即使它只是git 。 不需要非标准端口号允许使用较短的‹user›@‹host›:‹path› git仓库的标记,而不是更长的ssh://‹user›@‹host›:‹port›/‹path› 。 我怀疑目前任何常见的Docker镜像都使用这样的东西。 但如果可能的话,那么可以build议在这些图像上添加所需的服务器更改,以便这样的方法将来可行。