在将流量转发到我的后端服务器之前,尝试使用基本身份验证配置我的反向代理.任何人都可以给我一个解决方案.
这里的例子:
用户(互联网) - >反向代理/虚拟服务器(需要在此处添加基本身份验证) - >后端服务器(未经过身份验证)
在Node.JS前面运行nginx或其他Web服务器作为反向代理有什么好处?它提供什么?
(此问题适用于有关网络应用程序的问题,而不是网页).
谢谢.
我使用Nginx的反向代理,我想强制请求进入HTTPS,因此如果用户想要使用http访问该URL,他将自动重定向到HTTPS.
我也使用非标准端口.
这是我的nginx反向代理配置:
server {
    listen 8001  ssl;
    ssl_certificate /home/xxx/server.crt;
    ssl_certificate_key /home/xxx/server.key;
    location / {
        proxy_pass https://localhost:8000;
        proxy_redirect off;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Ssl on;
        proxy_set_header  X-Forwarded-Proto  https;
    }
}
我已经尝试了很多东西并且还阅读了有关它的帖子,包括这个服务器故障问题,但到目前为止还没有任何工作.
我们正在开发一个需要利用html5 websockets的Ruby on Rails应用程序.目前,我们有两个单独的"服务器"可以这么说:我们主要应用上的nginx +客运运行,并使用PRATIK奈克的一个单独的服务器抽筋框架(这是上运行薄)来处理WebSocket连接.
理想的情况是,当谈到时间进行部署,我们不得不对nginx的+乘客运行Rails应用程序,和WebSocket的服务器将背后nginx的被代理,所以我们不会需要有一个不同的端口上运行的WebSocket伺服器.
问题是,在这种设置中,似乎nginx过早地关闭了与Thin的连接.已成功建立与瘦服务器的连接,然后立即关闭200响应代码.我们的猜测是nginx没有意识到客户端正试图为websocket流量建立一个长期运行的连接.
不可否认,我对nginx配置并不是那么精明,所以,甚至可以配置nginx作为websocket服务器的反向代理吗?或者我是否必须等待nginx为新的websocket握手提供支持?假设让app服务器和websocket服务器都在端口80上监听是一个要求,那么这可能意味着我必须在没有nginx的单独服务器上运行Thin吗?
提前感谢任何建议或意见.:)
-约翰
可以在/ etc/hosts文件被用来代替解析器使用时proxy_pass?
我需要对同一个nginx机器执行proxy_pass.有没有办法使用机器的/ etc/hosts文件解析域,而不是通过"解析器"属性指定DNS服务器?
这将节省我到达同一服务器所需的额外跃点.我已经尝试在/ etc/hosts文件中设置映射到DNS的内部IP,但是nginx仍然从解析器属性中设置的DNS服务器读取.或者有没有办法让HTTPProxy模块考虑/ etc/hosts文件设置?
感谢您分享的任何建议..
这是我在nginx论坛上发布的同一个问题:http: //forum.nginx.org/read.php?11,218997
我有一个反向代理,在外部执行HTTPS,但内部使用HTTP.
这意味着默认情况下,应用程序内URL将使用HTTP作为方案,因为这是它的联系方式.
代理如何告诉后端应该使用HTTPS?
我的nginx服务器实际上是用一个简单的代理我的节点后端(它在端口3000上侦听):
location /api/ {
proxy_pass http://upstream_1;
}
其中upstream_1是我在nginx.conf中定义的节点集群(在端口3000上).
我将不得不通过http连接添加SSL,所以我有以下问题:我是否只需要配置nginx来启用ssl?它会自动"解密"请求并将其解密传递给Node,它将能够正常处理它吗?或者我是否还需要配置Nodej以支持ssl?
我在两台服务器上安装了机架1.4.5的导轨3.2.15.第一台服务器是服务静态资产的nginx代理.第二台服务器是服务于rails应用程序的独角兽.
在Rails中,production.log我总是看到nginx IP地址(10.0.10.150),而不是我的客户端IP地址(10.0.10.62):
Started GET "/" for 10.0.10.150 at 2013-11-21 13:51:05 +0000
我希望在日志中拥有真正的客户端IP.
HTTP头X-Forwarded-For和X-Real-IP被正确地建立在nginx的,我已经定义10.0.10.62设置为不是可信的代理服务器地址config.action_dispatch.trusted_proxies = /^127\.0\.0\.1$/中config/environments/production.rb,这要归功于另一个答案.我可以检查它是否正常工作,因为我在应用程序控制器中记录它们:
在app/controllers/application_controller.rb:
class ApplicationController < ActionController::Base
    before_filter :log_ips
    def log_ips
        logger.info("request.ip = #{request.ip} and request.remote_ip = #{request.remote_ip}")
    end
end
在production.log:
request.ip = 10.0.10.150 and request.remote_ip = 10.0.10.62
在调查时,我看到它Rails::Rack::Logger负责记录IP地址:
def started_request_message(request)
  'Started %s "%s" for %s at %s' % [
    request.request_method,
    request.filtered_path,
    request.ip, …我想用nginx proxy_pass模块替换我的node-http-proxy模块.是否可以使用新发布的nginx版本,正如我已经读过的那样,它支持开箱即用的HTTP/1.1.我看到一些线程与这个问题有关,nginx不支持websockets.
在我的情况下,我在后台运行几个节点项目,并希望将我的websocket连接从端口80路由到8000-8100,具体取决于域.有没有使用tcp_module插件进行websocket代理/反向代理的本地方法?
我试图建立一个在上游与nginx.conf到proxy_passing,但如果我尝试过的WebSocket连接到端口80,我得到一个502网关错误.
有人遇到同样的问题吗?有没有人有一个nginx + spcket.io的工作示例,代理端口80?
我们在Apache SSL代理后面的专用appserver上有一个带有嵌入式Tomcat的spring-boot/spring-mvc应用程序.
代理服务器上的SSL端口为4433,转发到应用服务器上的端口8080.
所以代理服务器的URL转发如下:
https://proxyserver:4433/appname   >>forward>>   http://appserver:8080/
运行WITHOUT代理时,首先发生的事情是
spring-security重定向请求,如:
http://appserver:8080/   >>redirect>>   http://appserver:8080/login
以显示登录表单,通过扩展WebSecurityConfigurerAdapter与
  ...
  httpSecurity.formLogin().loginPage("/login") ...
  ...
它在没有代理的情况下工作正常,但是WITH代理需要更改重定向,因此Spring应该重定向到相应的代理URL,如:
http://appserver:8080/   >>redirect>>   https://proxyserver:4433/appname/login
但还没有成功.
我正在尝试应用此解决方案:
http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-use-tomcat-behind-a-proxy-server(59.8 在前端代理服务器后面使用Tomcat)
我们在Apache中配置了mod_proxy,并验证它是否发送了预期的头文件:
X-Forwarded-For: xxx.xxx.xxx.xxx
X-Forwarded-Host: proxyserver
X-Forwarded-Port: 4433
X-Forwarded-Proto: https
应用程序以参数启动:
export ARG1='-Dserver.tomcat.protocol-header=x-forwarded-proto' 
export ARG2='-Dserver.tomcat.remote-ip-header=x-forwarded-for'
java $ARG1 $ARG2 -jar webapp.jar
仍然重定向不起作用.
它将保持本地重定向,   http://appserver:8080/login客户端无法使用.
我们需要做些什么来使这个场景有效吗?
编辑:此外,我担心代理URL中的"/ appname"部分.在appserver上,应用程序以"/"为根.在通过代理时,应该如何指示spring// appname应该包含在发送回客户端的所有URL中?