嘿,我有一个 rails 应用程序,我已经将几乎所有流量重定向到使用 https。但是,我的应用程序中有一个特定路径,我需要通过普通 http 访问,比如说somedomain.com/special
。
我想知道这是否可行,因为我的 rails 应用程序似乎是在 https 块中定义的。也许有办法在 http 和 https 上托管它,然后将所有流量从 http 重定向到 https(如果不是)/special
?(我也需要/RPC2
在 http 上,但这不是 rails 路径,这就是为什么它现在有效的原因)。
我将非常感激任何建议。如果您发现我的配置中有任何明显的错误,我也非常感激您指出它们!
server {
listen 80;
server_name somedomain.com;
location / {
rewrite ^ https://somedomain.com$request_uri? permanent;
}
location /RPC2 {
include scgi_params;
scgi_pass 127.0.0.1:5000;
auth_basic "app";
auth_basic_user_file /var/www/server/basic.auth;
}
}
server {
listen 443 default ssl;
server_name somedomain.com;
root /var/www/sites/app/current/public;
passenger_enabled on;
rails_env production;
ssl_certificate /etc/ssl/certs/myssl.crt;
ssl_certificate_key /etc/ssl/certs/myssl.key;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
location /downloads {
autoindex on;
autoindex_exact_size off;
auth_basic "node";
auth_basic_user_file /var/www/server/basic.auth;
alias /var/www/downloads/;
}
}
再次感谢!
答案1
我认为您可以通过 proxy_passing 到达 https 服务器。
服务器 { 听80; 位置 /特殊 { 代理通过 https://localhost:443; proxy_set_header X-真实IP $remote_addr; } }
如果此方法有效,请检查应用程序和 nginx 访问日志中的 /special 请求。如果记录的 IP 为 127.0.0.1,请启用 nginx 的 http_realip 模块并添加
设置真实ip为127.0.0.1; real_ip_headerX-真实IP;
在 ssl 服务器配置中。