[乐意黎原创] 通过Apache反向代理实现多个http/https访问NodeJS服务
来源:互联网 发布:脑卒中危险因素知多少 编辑:程序博客网 时间:2024/05/16 11:53
乐意黎使用ECS主机的环境: Centos 7.2 系统, php +Apache, 搭了 Nodejs.
起先只能通过 IP 来访问node, 折腾了好几天, 起初配置了, 可以通过https子域名来访问, 但会跳转到 IP上,(我使用了 htacess 来转向), 终于可以通过配置apache来通过http或https子域名 来访问nodejs了. 未在 htacess中设置任何转向.
服务器安装了 Nodejs, Apache, 并且申请了SSL证书.
1. 通过 80端口访问(http访问 node)
在 /etc/httpd/httpd.conf里添加如下配置, (注, 未在 .htacess 文件中做任何设置)
nodejs 服务返回 http 服务, 端口为: 3389
即: 通过 http://wxapi.luxi.ren 访问代理的 node 服务
Nodejs 中设置如下,
2. 通过 443端口访问 (https访问node)
如: 通过 https://api.luxi.ren 访问 nodejs 服务
特别说明:
1. 此种情况下, api 子域名配置 SSL 证书
2. Node JS 返回的是 http 服务 即var https = require('http'); node 未绑定证书. 端口为 3389.
node 部分代码如下:
var http = require('http');
...
var port = 3389;
...
http.createServer(app).listen(port, function(req, res){
// res.writeHead(200);
console.log('server is running on port '+port);
});
编辑 vim /etc/httpd/extra/httpd-ssl.conf 文件的配置.
#Listen 443SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4SSLHonorCipherOrder on SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1SSLProxyProtocol all -SSLv3SSLPassPhraseDialog builtin# Inter-Process Session Cache:SSLSessionCache nonenotnullSSLSessionCacheTimeout 300#SSLUseStapling On#<VirtualHost _default_:443><VirtualHost *:443># General setup for the virtual hostServerName wxapi.luxi.renDocumentRoot "/usr/local/apache/htdocs"ServerAdmin aerchi@gmail.comErrorLog "/usr/local/apache/logs/error_log"TransferLog "/usr/local/apache/logs/access_log"SSLEngine on#SSLCertificateFile "/etc/httpd/server.crt"SSLCertificateFile "cert/public.pem"#SSLCertificateFile "/etc/httpd/server-dsa.crt"#SSLCertificateFile "/etc/httpd/server-ecc.crt"SSLCertificateKeyFile "cert/private.key"SSLCertificateChainFile "cert/chain.pem"<FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars</FilesMatch><Directory "/usr/local/apache/cgi-bin"> SSLOptions +StdEnvVars</Directory>BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0# Per-Server Logging:CustomLog "/usr/local/apache/logs/ssl_request_log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"</VirtualHost>
# 2017-06-22#<VirtualHost wxapi-2.luxi.ren:443><VirtualHost *:443> ServerName wxapi-2.luxi.ren ServerAlias wxapi-2.luxi.ren ServerAdmin aerchi@gmail.com SSLEngine on # SSLProtocol "TLSv1.2 TLSv1.1 TLSv1" SSLCertificateFile "cert/public.pem" SSLCertificateKeyFile "cert/private.key" SSLCertificateChainFile "cert/chain.pem" # ProxyRequests off <Directory /> Options -Indexes +FollowSymLinks AllowOverride None Require all granted </Directory> ProxyRequests Off ProxyPreserveHost On ProxyVia Full <Proxy *> Require all granted </Proxy> <Location /> ProxyPass http://localhost:3389/ ProxyPassReverse http://localhost:3389/ </Location></VirtualHost>
附: apache里SSL 的配置
安装证书
文件说明:
1. 证书文件xxxx.pem,包含两段内容,请不要删除任何一段内容。
2. 如果是证书系统创建的CSR,还包含:证书私钥文件214137331610269.key、证书公钥文件public.pem、证书链文件chain.pem。
( 1 ) 在Apache的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为214137331610269.key;
( 2 ) 打开 apache 安装目录下 conf 目录中的 httpd.conf 文件,找到以下内容并去掉“#”:
#LoadModule ssl_module modules/mod_ssl.so (如果找不到请确认是否编译过 openssl 插件)#Include conf/extra/httpd-ssl.conf
( 3 ) 打开 apache 安装目录下 conf/extra/httpd-ssl.conf 文件 (也可能是conf.d/ssl.conf,与操作系统及安装方式有关), 在配置文件中查找以下配置语句:
# 添加 SSL 协议支持协议,去掉不安全的协议SSLProtocol TLSv1.2 TLSv1.1 TLSv1# 修改加密套件如下SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4# 证书公钥配置SSLCertificateFile cert/public.pem# 证书私钥配置SSLCertificateKeyFile cert/xxxx.key# 证书链配置,如果该属性开头有 '#'字符,请删除掉SSLCertificateChainFile cert/chain.pem
( 4 ) 重启 Apache。
( 5 ) 通过 https 方式访问您的站点。
-------------------------------------------------------------------------------------------------------
表述有所混乱, 但配置测试成功.
4. 测试页面(未在 htacess中设置任何转向. )
1). 第一个 正常的 https服务
2). 第二个https访问代理的nodejs
乐意黎原创
2017-06-22
本文地址: http://blog.csdn.net/aerchi/article/details/73605496
- [乐意黎原创] 通过Apache反向代理实现多个http/https访问NodeJS服务
- [乐意黎] 通过Apache代理访问NodeJS服务
- 通过 Apache 代理访问 NodeJS 服务
- Apache实现反向代理访问web服务
- Apache搭建反向代理用Http访问Https站点
- NodeJS实现HTTP/HTTPS代理
- NodeJS实现HTTP/HTTPS代理
- apache做http和https反向代理
- Apache设置https反向代理
- 通过Apache反向代理实现微信服务器80端口访问
- nginx 反向代理http/https
- nginx反向代理批量实现https协议访问
- apache设置反向代理访问 NodeJs 网站(wdcp 安装代理模块+配置虚拟主机)
- nginx反向代理多个tomcat服务
- nginx反向代理多个tomcat服务
- 通过NodeJS,Express搭建本地HTTP访问服务.
- 下载编译安装Apache HTTP Server 2.4.23以及配置HTTP/HTTPS反向代理
- 一、Nginx + Apache 通过反向代理实现负载均衡
- Linux学习第十八篇--文件的打包,解or压缩及备份
- ural 1017. Staircases DP
- 栈的压入弹出序列
- redis集群替换服务器
- iptables配置后导致服务器无法访问互联网
- [乐意黎原创] 通过Apache反向代理实现多个http/https访问NodeJS服务
- testng如何实现等待(软等待、智能等待)
- 连接池
- JVM类加载机制
- ExecutorService的十个使用技巧
- MySQL自动化运维之用mysqldump和mysqlbinlog实现某一数据库的每周全备和每天差异备份,并添加到执行计划【热备】
- stylus入门使用方法
- 深入理解Java虚拟机(3)--Java内存区域的划分及作用
- C源程序:输入当前目录下的文本文件名称,尝试打开文件,逐个字符读取文件内容并显示出来