这是一个简单构建个人网站的教程。涉及nginx、docker;里面还顺便普及了一下nginx使用,如何映射一个端口号到多个域名。
购买
在网上查阅了各种资料,碍于国内严格的审查备案机制,大致有四种组合:
- 国外域名+国外服务器,直接使用,国内速度慢
- 国外域名+国内服务器,速度快,但无法直接解析(需要将国外域名转到国内的运营商)
- 国内域名+国外服务器,好像不太这么用
- 国内域名+国内服务器,需要备案,速度快
后来本着只是小打小闹的个人网站,所以使用了第一种方案,反正刚好还可以在网站上写一些和谐的内容。确定了方案之后,接下来就是买买买了。
购买服务器
直接用之前趁打折优惠19.9刀一年买的用来翻墙的搬瓦工服务器,512MB的内存和11GB的存储空间,性能有点堪忧。好在只是用来搭建个人网站,所以也够用了。同时还把一个端口共享给了我同学,如果这个过程涉及交易的话就违法了。
购买域名
恰逢godaddy打折,于是屯了一个自己姓名的.com域名
配置
接下来要对服务器还有域名做一些配置
配置域名
打开域名的DNS配置管理器
| 类型 | 名称 | 值 | TTL | 
|---|---|---|---|
| A | @ | your_ip | 600 秒 | 
| A | blog | your_ip | 1 小时 | 
| A | www.blog | your_ip | 1 小时 | 
| A | notion | your_ip | 1 小时 | 
| A | www.notion | your_ip | 1 小时 | 
| CNAME | www | @ | 1 小时 | 
配置完域名和子域名之后剩下的默认值可以基本不用动,这样这些域名就能打到your_ip了。配置完之后不要慌,TTL上面就是生效时间。假如二级域名前面没有家www的话,那在导航栏中输入长域名www.blog.yourdomain.com就不会打到ip。
配置nginx
这么多域名打到一个ip,我们要将他们进行区分,转发到不同的端口,这样就能实现在一个服务器上部署多个子域名网站了。这时候你就会发现nginx是个好东西,这里假设你已经安装好了nginx。
配置nginx
打开/etc/nginx/nginx.conf1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    # for default
    server {
        listen 80 default;
        return 204;
    }
    include /etc/nginx/conf.d/*.conf;
}
一个端口号和server_name唯一确定了一个配置,如果不能精确匹配到/etc/nginx/conf.d/*.conf中的port和servername,则会使用上面默认的server
配置具体server
打开需要配置的blog的conf:/etc/nginx/conf.d/blog.conf
按照下面的写法把blog.yourdomain.com转发到了本地的4000端口1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16server {
    listen       80;
    server_name  blog.yourdomain.com www.blog.yourdomain.com;
    location / {
        #root   /usr/share/nginx/html;
        #index  index.html index.htm;
        proxy_pass http://localhost:4000;
        proxy_redirect default;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
假如要无脑转发到某网站的话就用以下配置
| 1 | upstream notion { | 
这样配置之后,notion.yourdomain.com就直接跳转到notion.so去了
部署个人网站
根据上面的nginx配置我们已经把blog.yourdomain.com转发到了该服务器的4000端口了,所以我们只需要使博客服务监听4000端口就行了。
参考之前写的十分钟hexo装进docker教程,我们使用docker的端口映射就可以轻松地使博客服务监听4000端口。
 
         
        