这是一个简单构建个人网站的教程。涉及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.conf
1
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端口。