我试图使用nginx作为运行Tomcat的内部Web服务器的反向代理,该服务器托pipe着我们的ERP系统的前端。 它已经正常工作了:我可以完美地连接到nginx服务器(这是locking在我们的networking,不同的VLAN,防火墙等等),然后反向代理到我的ERP服务器。 但是,我想要添加一个额外的保护层,要求用户在他们的计算机上有一个数字证书,以便他们可以访问第一个(nginx)服务器。 后端服务器不使用/不需要证书。 我已经通过这个教程http://nategood.com/client-side-certificate-authentication-in-ngi ,它允许我生成我的自签名证书和其他一切。 当在nginxconfiguration中使用ssl_verify_client可选时,我可以正常连接到我的后端服务器,但是不需要/不需要证书。 当我把它切换到ssl_verify_client时 ,所有的访问都被阻塞了 400 Bad Request No required SSL certificate was sent 无论使用哪种浏览器(Chrome,IE,Edge,Firefox)。 当然,我已经把所有的证书/链条放在我的客户端计算机上,但是在任何浏览器上都没有证书。 我错过了什么? 这里是我的完整的nginxconfiguration: server { listen 443; ssl on; server_name 103vportal; ssl_password_file /etc/nginx/certs/senha.txt; ssl_certificate /etc/nginx/certs/server.crt; ssl_certificate_key /etc/nginx/certs/server.key; ssl_client_certificate /etc/nginx/certs/ca.crt; ssl_verify_client on; location / { proxy_pass http://10.3.0.244:16030; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 300; […]
给你一点我的问题的背景: 我有一个应用程序,安装软件并公开发布。 安装时: 将基础文件安装到根path(即/var/www/{site} ) 创build一个新的nginxconfiguration文件并将其放在/etc/nginx/sites-available/{site} 从/etc/nginx/sites-enabled/{site}创build该文件的符号链接 重新加载nginxconfiguration: service nginx reload 将API调用发送到CloudFlare,以将来自{site}.mydomain.com所有请求指向服务器的IP地址 之后, {site}.mydomain.com应该工作,除非…它不! …等你~5分钟,然后神奇地开始工作。 在代理与nginx生效之前是否有延迟? 如果我删除{site}并读取它(与上面相同的过程),即使它在以前工作,它会停止工作一段时间,然后再次开始工作。 我无法解释发生了什么! nginxconfiguration(其中{site}是foobar ) upstream mydomain_foobar { server 127.0.0.1:4567; } server { listen 80; server_name foobar.mydomain.com; root /var/www/mydomain/foobar/; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://mydomain-foobar/; proxy_redirect off; # Socket.io […]
我需要知道如何做一个代理通过在nginx的某些url模式只 我已经写了下面的内容,但我不确定是否按照我的要求工作。 我想要的是 1. if the url matches '/member-chat' it needs to be redirected the proxy pass 2. anything else needs to be re-written as below 是什么书面是正确的? location ^/member-chat { proxy_pass http://lxx.com:5280/http-bind; } location !/member-chat { rewrite ^/files/([^/]+)/([^/]+)$ /_files/$1/$2; rewrite ^/plugins/([^.]+) http://www.lxx.com:9090/plugins/$1; } 如果我这样做如下 location / { rewrite ^/files/([^/]+)/([^/]+)$ /_files/$1/$2; rewrite ^/plugins/([^.]+) http://www.lxx.com:9090/plugins/$1; } 我得到一个错误 […]
我有一个nginx反向代理服务于Web应用程序。 这个networking应用程序在某些情况下返回302redirect,我不能改变它。 但是,由于某些原因,我需要改变这个返回状态为301 。 我试过了 proxy_intercept_errors on; error_page 302 =301; 但显然这是=301部分作为新的位置。 所以我在找的是这样的: proxy_intercept_errors on; error_page 302 =301 $PROXY_HEADER_LOCATION; 我怎样才能做到这一点?
我们有一个内部应用程序,后端是用Java编写的,前端是用HTML,Javascript等编写的。 该应用程序使用nginx服务器托pipe。 但是,我有另一个Web应用程序是在Python的瓶子里写的,老板想把这两个工具集成在一起。 比如说,最初的项目(Java解决scheme)具有域名 inv.datafireball.com 而pipe理员告诉我,他可以通过这种方式更改nginx的configuration文件,路由可以映射/代理到另一台服务器上运行的第二个应用程序 inv.datafireball.com/competitor -> datafireball.com:5000 但是,根据我的研究,Python应用程序中的所有path都需要重新编码: /static/js/d3.js需要更改为/competitor/static/js/d3.js … 我们硬编码几条path看起来非常有前途,但是,我们的Python应用程序是相当大的,它是手动更改所有path后真的是一个大批量。 任何人都可以给我一个指导,如果有一个简单的方法来映射/代理一个Python烧瓶应用程序到用Java编写的现有应用程序与改变现有的Python代码?
我使用php curl和nginx作为代理。 这里是我的代码: $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_PROXY, $proxy); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $curl_scraped_page = curl_exec($ch); curl_close($ch); echo $curl_scraped_page; 经过一段时间,运行nginx的负载非常慢,有时它返回错误500。 日志说 失败(24:打开的文件过多), 一些更多的细节: root@proxy-s2:~# ulimit -Hn 4096 root@proxy-s2:~# ulimit -Sn 1024 服务器上没有其他的脚本在运行,也没有其他脚本正在使用这个代理。 这是Nginx的错误? 如何解决? 要么 还有什么呢? 如何解决? 我没有改变默认的nginxconfiguration Nginx的重启解决了这个问题(暂时我猜) 这里是我的nginx.conf worker_processes 1; events { worker_connections 1024; } http { include mime.types; […]
我有一个简单的Python瓶api和一个nginx服务器,主机的index.html,使ajax请求的端口8001本地主机上运行瓶api。问题是我不处理CORS,因为它运行在封闭的环境,它只是一个简单的API来pipe理一些活动目录的东西,它位于防火墙和基本身份validation。 我并不担心跨站点脚本。 我需要知道的是,如果我编程从我的ajax请求 $.ajax({ type: "GET", url: "http://localhost:8001/newuser/" + "firstName=" + fname + "&lastName=" + lname + "&email=" + email + "&password=" + new_password, success: function(data){ alert(data); document.getElementById("alert").innerHTML = data.toString(); } }); 至 $.ajax({ type: "GET", url: "/newuser/" + "firstName=" + fname + "&lastName=" + lname + "&email=" + email + "&password=" + new_password, success: […]
我想使用Golang作为我的服务器端语言,但是我读过的所有内容都指向了nginx作为web服务器,而不是依赖于net/http (不是说它很糟糕,但总体上看起来更好,不是这篇文章的重点虽然)。 我已经find了一些关于使用Golang的fastcgi的文章,但是我没有find任何有关反向代理和HTTP的东西,除了这个基准testing ,不幸的是, 这个基准testing还不够详细。 有没有任何教程/指南可用于如何运作? 例如, 在Stackoverflow上有一个很大的post,详细介绍了Node,但是我找不到类似的。
我有一个反向代理到我的Docker服务的问题。 我有一个IP 10.0.0.163的本地机器,并运行与它的nginx和portainer的Docker堆栈(这个问题只有他们很重要)。 泊坞窗,compose.yml: … portainer: image: portainer/portainer ports: – "9000:9000" volumes: – "/var/run/docker.sock:/var/run/docker.sock" – "/mnt/StorageDrive/Portainer:/data" deploy: placement: constraints: [node.role == manager] networks: … – proxy reverse-proxy: image: reverseproxy:latest ports: – "80:80" networks: – proxy networks: … proxy: nginx.conf: worker_processes 1; ## Default: 1 events { worker_connections 1024; } http { sendfile on; server { […]
我正在尝试为两台服务器设置一个nginx负载均衡器/代理,并在这两台服务器上运行OAuth身份validation的应用程序。 当端口80上运行nginx时,一切运行正常,但是当我将其放在任何其他端口上时,OAuth身份validation将失败并出现“无效签名”错误消息。 这是我在nginx.conf中的服务器configuration: server { listen 80; server_name localhost; location / { proxy_pass http://webservice; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-FORWARDED-PROTO https; } 有没有人遇到类似的问题? PS:我注意到,OAuth领域属性中省略了端口80,但其他端口正常添加。