nginx+https+http2搭建(一)

引言

最近购买了公司的美团云,把blog从GitHub page搬到了云服务器,自然还要折腾点东西,nginx是一直没接触过又特别想了解的一项,于是花了点时间折腾了一下,顺便加上了https和http2,把arayzou.com全站都转了HTTP2。上个图:

漂亮的绿色小锁:

控制台资源的协议显示h2:

Linux版本选择

服务器的Linux版本我选择的是Ubuntu 16.04,为什么?

nginx安装

1
sudo apt-get install nginx

Ubuntu安装之后的文件结构大致为:

  • 所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下
  • 程序文件在/usr/sbin/nginx
  • 日志放在了/var/log/nginx中
  • 并已经在/etc/init.d/下创建了启动脚本nginx
  • 默认的虚拟主机的目录设置在了/var/www/nginx-default (有的版本 默认的虚拟主机的目录设置在了/var/www, 请参考/etc/nginx/sites-available里的配置)

nginx常用的一些命令:

  • 启动

    1
    sudo nginx
  • 重启nginx

    1
    sudo nginx -s reload
  • 修改配置后检查配置文件是否正确

    1
    nginx -t -c /etc/nginx/nginx.conf
  • 查看nginx进程

    1
    ps -ef | grep nginx
  • 停止nginx

    1
    kill -QUIT 主进程号
  • 暴力停止

    1
    kill -9 进程号

nginx配置

上面说到nginx的配置文件都在/etc/nginx下,在此目录下有个nginx.conf文件,可以当做是nginx的主配置文件,打开文件可以看到这样一行:

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

意思是引入conf.d文件夹下的所有.conf的配置文件,所以我们自己的配置文件基本上都配置在.conf文件夹下就好。

进入到.conf文件夹,新建一个配置文件比如:vi demosite.conf,里面的配置内容我这里说两种,一种是动态站点,一种是静态资源目录

  • 动态站点的配置文件代码:
    server_name是你自己的域名,proxy_pass中配置server上的动态站点的端口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server
{
listen 80;
server_name demosite.com;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}
access_log logs/demosite.com_access.log;
}
  • 静态资源目录的配置文件代码:
1
2
3
4
5
6
7
8
9
10
11
12
server
{
listen 80;
server_name file.demosite.com;
location / {
root /home/file;
}
access_log logs/static_file_access.log;
}

配置完成后执行sudo nginx -s reload重启nginx及可生效。

后续请看nginx+https+http2搭建(二)