准备工作
- 下载
SSL
证书文件 - 安装了
nginx
的服务器 - 你的域名已经解析到目标服务器
证书安装
以腾讯云为例,SSL 的证书文件可以在你的控制台SSL管理后台查看并下载。
其他服务器配置可以参考 ssl证书安装指引
下载证书并解压 得到下列文件夹,将 nginx
文件夹之外的 其他不用的文件删除。
将 Nginx
文件夹用 scp
工具上传到你的服务器 ,windows上可以用 git
工具实现 scp
功能。
tar -cvf ssl.tar Nginx && scp ssl.tar root@ip:/etc/nginx/
在 nginx
根目录解压 ssl.tar
得到一个 ssl
文件夹
tar -xvf ssl.tar
配置 /etc/nginx/nginx.conf
文件
server {
listen 443;
server_name www.你的域名.com; #填写绑定证书的域名
ssl on;
ssl_certificate /etc/nginx/ssl/1_www.你的域名.com_bundle.crt;
ssl_certificate_key /etc/nginx/ssl/2_www.你的域名.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
root html; #站点目录
index index.html index.htm;
}
}
检测 nginx.conf
文件配置和软重启 nginx
nginx -t
# nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
# nginx: configuration file /etc/nginx/nginx.conf test is successful 配置正常
nginx -s reload #软重启nginx
打开你的域名会看到nginx 的欢迎页面,如果没有,请检查配置和证书是否正常。
nginx 配置 node端口转发
现在有两套 RESTful API
部署在node 服务a
和 服务b
,分别监听在 端口 8765
和 3000
,分别存在与
/home/ruff/a/
和 /home/ruff/b/
文件夹
┌──────────┬────┬─────────┬──────┬──────┬────────┬─────────┬────────┬─────┬────────────┬──────┬──────────┐
│ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
├──────────┼────┼─────────┼──────┼──────┼────────┼─────────┼────────┼─────┼────────────┼──────┼──────────┤
│ app1 │ 0 │ 0.0.0 │ fork │ 4376 │ online │ 94 │ 3D │ 0% │ 55.9 MB │ root │ disabled │
│ app2 │ 1 │ 0.0.1 │ fork │ 5506 │ online │ 0 │ 46h │ 0% │ 107.0 MB │ root │ disabled │
└──────────┴────┴─────────┴──────┴──────┴────────┴─────────┴────────┴─────┴────────────┴──────┴──────────┘
现在我要配置将 https://www.你的域名.com
的请求全部转发到 服务a
,https://www.你的域名.com/test/b
的请求转发到 服务b
,同时配置两套vue.js
打包的管理后台的静态资源。
编辑 nginx.conf
events {
worker_connections 768;
# multi_accept on;
}
http{
include mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name www.域名.com;
rewrite ^(.*)$ https://$host$1 permanent;
}
server{
listen 443;
server_name www.域名.com;
ssl on;
ssl_certificate /etc/nginx/ssl/1_www.域名.com_bundle.crt;
ssl_certificate_key /etc/nginx/ssl/2_www.域名.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
#a api
location /{
proxy_pass http://localhost:8765;
}
#a admin
location /a/admin {
root /home/ruff/a/admin/;
try_files /index.html =404;
}
#a static 打包的线上版本找不到资源
location /a/admin/static/ {
alias /home/ruff/a/admin/static/;
}
#b
location /test/b/ {
#url 重写
rewrite /test/b/(.*) /$1 break;
# 转发3000端口
proxy_pass http://127.0.0.1:3000;
proxy_set_header X-Real-Host $host;
proxy_set_header x-Real-IP $remote_addr;
proxy_set_header Host $host;
}
#资源转发
location /assets/ {
alias /home/ruff/b/assets/;
}
#b 静态资源
location /b/admin {
root /home/ruff/b/admin/;
try_files /index.html =404;
}
}
}
user www-data;
worker_processes auto;
pid /run/nginx.pid;
关于 nginx url rewrite
可以查看 Nginx URL重写(rewrite)配置及信息详解
如果nginx
启动中之后无法访问可以查看原因类似的 [华为云 ECS 安装 Nginx 的端口问题]。(https://blog.youkuaiyun.com/Ruffaim/article/details/83744611)
稍后更新。