图片 18

详解Ali云LINUX服务器配置HTTPS(NGINX)

Nginx多文件配置二级子域名(推荐)


首先,在自己的域名控制台中添加解析,这里以添加blog前缀为例

我用的是万网,在 解析设置添加解析

主机记录:你想要的二级域名
记录值:你的IP地址

保存后,我们就完成了第一步把子域名解析到我们的服务器上。


第二步:添加配置文件

进入nginx的 /conf 配置文件夹中,编辑 nginx.conf 文件

[root@iZ2844brz0xZ ~]# cd /usr/local/nginx/conf/
[root@iZ2844brz0xZ ~]# vim nginx.conf

http 模块中添加如下语句

include /usr/local/nginx/conf/sites-enabled/*.conf;

告诉这个配置文件要去包含 /sites-enabled 目录下的所有以 .conf
结尾的配置文件。:wq 保存。

此时,我们新建一个 /sites-enabled 文件夹,并在其中添加
blog.***.com.conf 文件

[root@iZ2844brz0xZ conf]# mkdir sites-enabled
[root@iZ2844brz0xZ sites-enabled]# vim blog.***.com.conf

在文件中添加

server {
    listen 80;                              #监听端口
    server_name blog.***.com;               #绑定域名
    root /usr/local/nginx/html/blog/;       #网站根目录,建议使用绝对路径
    index index.php index.html index.htm;   #默认文件

    #添加对php的解析
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        /usr/local/nginx/conf/fastcgi_params;
    }

    #添加错误页面,利于搜索引擎收录以及良好的用户体验
    error_page 404 /404.html;
    location /404.html {
        root /usr/local/nginx/html/;
    }

    error_page 500 502 503 504 /50x.html;
    location =/50x.html {
        root /usr/local/nginx/html/;
    }
}

内容可自行添加


图片 1

图片 2

Nginx单文件配置二级子域名

nginx.conf 文件的 server 模块中添加以下语句

if ( $host ~* (\b(?!www\b)\w+)\.\w+\.\w+ ) {
 set $subdomain /$1;
}
location / {
 root html$subdomain;
 index index.html index.php index.htm index;
}

即可解析到对应文件夹


最后,重启nginx即可

[root@iZ2844brz0xZ sites-enabled]# /usr/local/nginx/sbin/nginx -s reload
server {

   listen    443 ssl;

   server_name localhost;

   ssl on;



   ssl_certificate   /root/data/cert/test.pem;

   ssl_certificate_key /root/data/test.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;



   location ^~/test {

      proxy_redirect off;

      proxy_set_header Host $host;

      proxy_set_header X-Real-IP $remote_addr;

      proxy_set_header X-Forwarded-Proto https;

      proxy_pass http://127.0.0.1:8080/test;

   } 

 }  

购买域名

腾讯是新网,阿里是万网,根据性价比买即可。

配置服务器 —— Nginx添加多个二级子域名,nginx子域名

下载Nginx源码包,解压源码包,进入解压后的目录,编译配置,命令如下:

注意:

自己当前的www.XXX.com是一级域名,可以用这个域名解析多个子域名,也就是二级域名——www.xxx.XXX.com。二级域名是免费无需再购买的。解析方法只需把主机记录值改成二级域名名即可,如下:

图片 3

image.png

您可能感兴趣的文章:

  • 详解linux中nginx启动 重启
    关闭命令
  • Linux(CentOS)环境下安装下载Nginx并配置
  • Linux下yum安装nginx教程
  • Linux下安装配置nginx详解
  • 详解Asp.Net Core 发布和部署( MacOS + Linux + Nginx
  • 在linux系统下安装两个nginx的简单方法
  • linxu服务器上nginx启动、关闭、配置检查命令(推荐)

安装pm2进程管理工具

基于node命令运行的项目都是一次性,断开主机连接后就不运行了,这时候需要安装用到进程管理工具。相关的工具有pm2,forever,我推荐pm2,更新更强大!

  • 安装pm2:

npm install -g pm2

  • 使用pm2:

pm2 start app.js

  • 运行pm2 list可以监控进程列表:

pm2 list

pm2的其他命令使用可以参考:
https://www.douban.com/note/314200231/

如果pm2运行刚刚app.js端口有冲突,需要更改端口重新运行或者关掉进程重新运行。Linux查找端口进程和关掉进程的命令:

netstat -apn | grep 端口号

kill -9 进程的pid号

部署配置说明

DNSPod域名解析

购买了服务器和域名之后,需要把服务器IP地址绑定到域名方可根据域名运行项目,否则只能通过IP地址来访问。

域名解析有两种方式,一是在当前的购买域名的平台解析,二是使用其他服务商解析,例如我选择的DNSPod。

服务器为阿里云 ECS,操作系统为 CentOS 6.5。

2.DNSPod平台解析

打开DNSPod官网,注册登陆。

  • 进入域名解析控制台

图片 4

image.png

  • 点击域名选项进入主机记录界面

图片 5

image.png

  • 点击添加记录,同样只需要把记录类型选为A,主机记录填www,记录值填自己IP地址,其他的默认即可。

图片 6

image.png

如果不幸的是,之前已经安装了nginx,但是没有编译ssl模块,那可以根据这篇文章,重新将ssl模块编译进去。

购买服务器

服务器商有很多选择,目前国内最多人使用的是阿里云,我买的是腾讯云。其实服务器都是差不多的,根据性价比买即可。个人购买出了系统选择其他一般按默认选择即可。系统选择linux的CentOS系统,Ubuntu也是linux系统,但CentOS更新,在安装软件时候比Ubuntu更加便捷。

图片 7

image.png

选好配置后购买付款即可。

跳转到解析设置页面,其中记录类型默认为 A 即可;

负载均衡

所谓负载均衡,就是通过配置多台服务来对单一路径进行访问服务,当有某台主机发生宕机时候,其他主机能承担相应任务,继续提供完整服务。

用刚刚在test.conf做下这个设置,test.conf原文件:

server {
  listen 80;
  server_name 119.29.72.246;
  location / {
        proxy_pass http://119.29.72.246:8081;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    
    proxy_set_header Host $http_host; 
    proxy_set_header X-Nginx-Proxy true;
    proxy_redirect off;
  }
}

改写后的最终文件:

upstream roots {
  server 119.29.72.246:8081;
}

server {
  listen 80;
  server_name 119.29.72.246;
  location / {
        proxy_pass http://roots;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    
    proxy_set_header Host $http_host; 
    proxy_set_header X-Nginx-Proxy true;
    proxy_redirect off;
  }
}

可以看到这个变动只是把server的proxy_pass对应的提取出来,然后在upstream里单独设置。当想设置负载均衡时,只需在upstream里继续添加主机Ip,如:

upstream roots {
  server 119.29.72.246:8081;
  server 119.221.72.246:3000;
  server 119.221.12.246:3000;
  ...
}

这样就可以设置多台主机为119.29.72.246这个访问提供服务了。

更多干货请访问https://github.com/osjj/。

图片 8

在window系统下登陆

使用putty登陆:

  • 打开Putty客户端输入
  • Host Name:云服务器的公网IP
  • Port:云服务器的端口,必须填22
  • Connect type:选择“SSH”

全部输入完后,点击“Open”,创建一个新对话。

图片 9

image.png

在Putty会话窗口中,主机帐号密码登录。

图片 10

image.png

为什么要申请域名,这就不多说了,网站想要外部访问,总得有个域名吧,难不成直接用
IP 访问吗。就算你非得用 IP访问,那对不起,下面配置
HTTPS证书的时候需要填写域名。
登录阿里云-万网,查询你要注册的域名,如果没有被注册的话,
可以直接购买,好的域名早就被域名倒手或者注册商自己抢注了,一般的域名,比如以公司名称、产品名称全拼、缩写的域名,一般是不会有人注册,这样的域名也相对便宜,基本一年不会过百的。 

安装nodejs运行环境

yum -y install nodejs

查看版本

node -v

可使用下面命令快速升级到最新版:

  • 首先安装n模块

npm install -g n

  • 升级命令

n stable

这时nodejs已经升到最新版了。

为了测试node.js的运行,先新建个文件跑一跑:

  • 随便找位置建个空目录:

mkdir -p /data/node

  • 打开目录,并新建并且编辑app.js文件

cd /data/node

vim app.js

  • 将以下测试代码放入:

const http =require('http')
http.createServer(function(req,res){
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('hello world')
}).listen(8081)
console.log('Server running at http://119.29.72.246:8081/');
  • 保存成功后运行:

node app.js

这时成功运行就可以看到打印信息了:

Server running at http://119.29.72.246:8081/

这时根据自己IP地址加端口访问在浏览器访问即可。

背景说明

Mac使用iTerm登陆,

  • 打开iTerm登陆输入:

ssh -t root@公网ip地址 -p 22

  • 然后在提示会让输入密码,输入登陆即可。

也可以设置无需输入密码登陆

  • 打开finder,按command + shift + g 键搜~/.ssh文件
  • 编辑下面内容至文件whatevername,保存在.ssh目录

set user <用户名>
set host <ip地址>
set password <密码>
set timeout -1

spawn ssh $user@$host
expect "*assword:*"
send "$password\r"
interact
expect eof
  • 打开iTerm2的profiles设置,编辑profiles
  • 在Genernal->Command下选择 Command,在输入框里填入 expect
    ~/.ssh/whatevername即可完成,以后每次登陆都用whatevername文件自动填写了信息。
![](https://upload-images.jianshu.io/upload_images/3977426-aa79fb659d9ba257.png)

image.png

将下载下来的证书解压,里面有两个文件一个是.key,另一个是.pem,把这两个文件传到服务器的一个目录中。

image.png

./nginx -t -c /usr/local/data/my-nginx.conf 
,检查配置文件并指定一个配置文件。

上面几个过程,在一些有部署经验的人看来很简单,但对于一个初出茅庐的新手来说,碰到的坑还是不少的,虽然可以百度可以谷歌,但网上资源多如繁星,要想快速正确筛选到正确答案,需要付出不少的精力和时间,更糟糕的情况是有些过于陈旧的答案,一旦放到项目使用,因为版本不相同,导致整个项目运行错乱,这时候需要从更加深入的环节才能解决处理,这对一名刚涉及部署上线的人来说是非常辛苦的。下面重回正题,就上面的各个环节更加详细地谈谈。

启动之后,如果不出意外,可以访问服务器,看到 nginx 默认页面。

反向代理设置

反向代理需要通过修改Nginx的配置文件来完成,Nginx的默认的配置文件是目录etc/nginx下的nginx.conf文件。

  • 进入etc/nginx文件夹

cd /etc/nginx

图片 11

image.png

  • 用编辑方式打开nginx.conf配置文件

vim nginx.conf

  • 下拉可以看到核心选贤server:

图片 12

image.png

  • 这个server是Nginx的默认配置,我们需要把默认配置的listen改掉,保留其中一个监听80端口;然后多加一个server选项:

图片 13

image.png

  • 在添加server的里写上配置:

server {
  listen 80;
  server_name 119.29.72.246;
  location / {
        proxy_pass http://119.29.72.246:8081;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    
    proxy_set_header Host $http_host; 
    proxy_set_header X-Nginx-Proxy true;
    proxy_redirect off;
  }
}

上面配置中,最重要是server_nameproxy_pass选项,proxy_pass对应的是项目运行原本带有端口的iP
地址,server_name是映射proxy_pass地址的新的地址。至此,Nginx初步配置完成。

  • 重启一下Nginx就可以通过server_name的地址就可以访问到项目原来带有端口的地址了。

nginx -s reload

=> ;

域名解析成功后,server_name选项可以用域名代替:

server_name xxx.com;
//不用带www

现在可以通过域名访问到原来的端口号了:

http://www.xxx.com
=> ;

最后的nginx.conf:

图片 14

image.png

到现在Nginx的反向代理已经完成,不过如果想更完善些,还能再调整一下。

nginx.conf文件下有一句代码:

include /etc/nginx/conf.d/*.conf

这句代码会把conf.d目录下所以的conf文件引入,所以我们其实可以把刚新建的server选项单独写在这些conf文件里,这种方式对管理复杂项目更加便捷。

  • 打开conf.d目录,新建编辑test.conf

cd conf.d
vim test.conf

  • 把刚刚的nginx.conf里新建的server选项剪贴到该目录下。

购买完域名后,需要完成一系列相关信息的填写,可按提示完成即可。然后进行域名解析

注意:

这时候如果能访问到’hello
world’说明没问题了,如果长久页面跳转不成功,说明端口出了问题,这是服务器的安全组设置所导致的。

  • 打开服务器控制台,打开安全组选项:

图片 15

image.png

  • 打开编辑规则:

图片 16

image.png

  • 进入添加规则界面可以看到各条规则,我们要访问哪个端口,必须添加相应的入站规则。(出站规则是本站访问外网时设置的)

图片 17

image.png

  • 添加规则,来源保持和原来一致,tcp对应的就是要访问的端口号,完成保存。

图片 18

image.png

现在再回到终端运行nodo app.js就可以访问到8081端口了!

安全组作用和防火墙相似,都是IPTables规则来做包过滤,相当于给主机添加多一重保护,设置了安全组后可以给主机添加多一层防火墙作双重防护。