Web服务二级域名配置

目前在VPS服务器上配置了网页博客的typecho

还有为了方便写文章的图床chevetero

还准备专门在一个目录下放一些静态网页做成wiki

这就涉及到web服务的二级域名设置了,设想是博客放在www.hack1s.fun

静态的图片、资源文件放在static.hack1s.fun

最后静态页面的wiki放在wiki.hack1s.fun

网上搜到的一些资料主要都是用nginx的,但是因为已经配置好了apache,本来想着看看apache咋弄,但是找了半天没找到资料,最后还是从头搞了nginx的环境;

这篇内容记一下配置服务器上apache到多个二级域名的整个过程;

Apache配置SSL

之前使用的SSL是Let’s encrypt的免费版,可以自动配置SSL;

并且之前一般用静态网页都是使用nginx设置的;

首先获取到腾讯云的证书之后,解压在里面的apache文件夹下面有三个文件

.
├── 1_root_bundle.crt
├── 2_[domain].crt
└── 3_[domain].key

把这三个文件放在一个统一的位置,比如可以放在 /etc/apache2下面;

之后首先要创建一个软链接

ln -sf /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf

之后编辑这个文件,增加几行内容

SSLEngine on
SSLCertificateFile [path to 2_domain.crt]
SSLCertificateKeyFile [path to 3_domain.key]
SSLCertificateChainFile [path to 1_root_bundle.crt]

开启强制https,编辑sites-available/000-default.conf

RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^{.*} https://%{SERVER_NAME}$1 [L,R]

启用apache的ssl模块和rewrite模块并重启

a2enmod ssl
a2enmod rewrite
systemctl restart apache2

这样设置完之后至少是可以访问https了;

但是发现并没有强制重定向,访问http还是可以访问;

修改chevereto图片上传大小限制

由于chevereto是用docker compose配置的,需要修改内部的配置文件

sudo docker -it [id] /bin/bash
apt install vim
vim /var/www/html/.htaccess

在这个文件中增加

php_value post_max_size 64M 
php_value upload_max_filesize 64M 

之后再仪表盘中就可以修改最大上传大小了;


以上两部分内容是之前apache配置的;然后二级域名实在没找到怎么弄,又换了nginx;

nginx配置php

nginx配置php需要安装php-fpm这个服务;

sudo apt-get install nginx php-fpm
sudo vim /etc/php/7.2/fpm/pool.d/www.conf

编辑这个文件中的几个地方

#  36行 listen = 127.0.0.1:9000 
#  62行 listen.allowed_clients = 127.0.0.1
# 113行 pm.max_children = 50
# 139行 pm.max_requests = 500 
# 340行 request_terminate_timeout = 0 
# 344行 rlimit_files = 1024

修改之后还需要去掉前面的分号;

之后编辑nginx的配置,nginx可以直接在config.d这个文件夹下面创建单独的配置;为了支持PHP主要需要的就是在location里面增加转发到php-fpm的配置

location / {
        try_files $uri $uri/ /index.php?$args;
        index  index.php;
    }

location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

这些设置完之后应该就可以访问php服务了

创建一个phpinfo尝试一下可以访问就ok了

<?php phpinfo();?>

nginx配置ssl

nginx设置ssl主要也是在站点文件中增加几行内容

nginx的域名得到的是两个文件

.
├── 1_[domain]_bundle.crt
└── 2_[domain].key

然后在想要设置ssl的文件中加入这么几行

    ssl on;
    ssl_certificate path to 1_[domain]_bundle.crt;
    ssl_certificate_key path to 2_[domain].key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1.2 TLSv1.1;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;

还有就是监听的端口从80改成443

nginx设置二级域名

最后就是最后的效果了,前面一开头也说了预想的效果;

这里把文件都放在了/etc/nginx/conf.d中,如果放在一个文件里有些不优雅,就每个二级域名单独一个文件

.
├── chevereto.conf
└── wordpress.conf

以wordpress.conf为例,里面的内容是

server {
    listen 443;
    server_name hack1s.fun;
    ssl on;
    ssl_certificate /etc/nginx/certs/1_hack1s.fun_bundle.crt;
    ssl_certificate_key /etc/nginx/certs/2_hack1s.fun.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1.2 TLSv1.1;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;

    root /var/www/html/wordpress;

    location / {
        try_files $uri $uri/ /index.php?$args;
        index  index.php;
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

另一个文件同理;

最后还有一点要说明的就是,二级域名和一级域名的证书是不能一样的,所以还需要再申请专门的证书给static.*wiki.*

uPic设置Chevereto图床

uPic是个Mac上的图床软件;

可以用brew直接装,这也是很神奇,明明github直接可以下release,但是App Store上会收费30r,而且还真有不少人买;

brew cask install upic

在upic里面新建一个自定义服务

image-20210204011843031

之后设置api地址为域名/api/1/upload

请求方式POST、使用base64

文件字段名为source

URL路径的值为

['image','url']

然后在其他字段中新建一个Header和两个Body

image-20210204012033084

需要填的就是下面这个表这样

KeyValue
Content-Typemultipart/form-data; charset=utf-8;
Key 
actionupload

关于这个Key,可以从chevereto的设置里找到

登录->右上角用户名->仪表盘->设置->API

然后就可以看到这个API的值了

最后就是在Typora里设置图片使用uPic上传到图床

image-20210204012330159

这样下来写的内容就可以线上线下都很方便的浏览了;