Nginx反向代理NodeJS Express 强制HTTP跳转HTTPS
NodeJS推荐使用PM2进行管理状态,详情了解可以npm install pm2 -g
pm2 --help
pm2 examples
pm2 start bin/www --name name --watch
--watch
是监视文件变化自动reload
重点说说反向代理和跳转HTTPS
UBUNTU系统,所以首先apt install nginx
,然后
进入/etc/nginx/sites-available
里面新建一个网站配置,例如www.xxx.com
,
当然了你也可以复制现有default复制一份出来例如cp default www.xxx.com
然后写入并以下信息
# 服务器的HTTP部分
server {
listen 80;
# 这里我直接做的反向代理,所以不用写根路径在哪
#root /var/www/html;
# 强制从HTTP跳转到HTTPS
rewrite ^(.*)$ https://$host$1 permanent;
# 默认的网页名称
index index.html index.htm index.nginx-debian.html;
# 网址名称
server_name xxx.net www.xxx.net;
location / {
# 这里就是反向代理的实现了,将访问的网址代理到本地NodeJS中
proxy_pass http://127.0.0.1:3000;
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
# 服务器的HTTPS本分
server {
listen 443;
# 默认首页没啥好说的
index index.html index.htm index.nginx-debian.html;
# 你的SSL信息,百度一下全是了
ssl on;
ssl_certificate /etc/nginx/cert/215077960110430.pem;
ssl_certificate_key /etc/nginx/cert/215077960110430.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
# HTTPS也要反向代理哦!
location / {
proxy_pass http://127.0.0.1:3000;
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
哦了,代码就是这么简单,nginx -t
检查一下配置有没有错,service nginx reload
加载一下,刷新网页查看结果吧!