以CentOS为例,在VPS上通过nginx工具实现反向代理,部署并访问网站。


1、安装nginx

1
yum install -y nginx

2、启动nginx服务,并配置开机启动

1
2
systemctl start nginx.service  # 启动nginx服务
systemctl enable nginx.service  # 配置开机启动

3、修改nginx配置文件

先停掉nginx服务

1
nginx -s stop

定位并修改nginx.conf文件

1
locate nginx.conf

locate nginx

1
vim /etc/nginx/nginx.conf

参考我的配置:https://github.com/lz-wang/MyConfigs/blob/master/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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
########### 注意:每个指令必须有分号结束 #################
user  root;           # 配置用户或者组
worker_processes  1;  # 允许生成的进程数,默认为1

error_log  /var/log/nginx/error.log warn;  # 制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;  # 最大连接数,默认为1024
}

http {
    include       /etc/nginx/mime.types;     # 文件扩展名与文件类型映射表
    default_type  application/octet-stream;  # 默认文件类型,默认为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"';  # 自定义log输出格式

    access_log  /var/log/nginx/access.log  main;  # 使用如上的自定义log输出格式
    sendfile        on;  # 允许sendfile方式传输文件,默认为off,可以在http块,server块,location块
    keepalive_timeout  65;  # 连接超时时间,默认为65s,可以在http,server,location块

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

    # error_page 404 https://www.baidu.com; # 错误页

    server {
      listen       80;  # 监听的端口
      server_name  localhost hello.com www.hello.com ;  # 监听主机地址,localhost-->本机

      location / {
        proxy_pass  http://127.0.0.1:8000;  # 反向代理自身端口,这样默认访问80端口也直接跳转指定的端口
        proxy_set_header Host $proxy_host;  # 修改转发请求头,让8000端口的应用可以受到真实的请求
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
    }

    server {
      listen       8000;         # 监听的端口
      location / {
        root /home/mygit/hugo-public;  # nginx根目录默认指向VPS文件系统的位置
        index index.html index.htm;
        # deny 127.0.0.1;     # 拒绝的ip
        # allow 172.18.5.54;  # 允许的ip
      }
    }
}

4、再次启动nginx

1
nginx  # 或者 nginx -s reload

不出问题的话,访问你的ip地址或者网站hello.com即可指向VPS服务器/home/mygit/website下的静态网站。

参考资料

  1. 把 Hugo 博客部署到VPS: http://www.shashun.site/post/first/
  2. Nginx配置文件解析:https://www.runoob.com/note/34639
  3. nginx.conf的常用配置类型和方法: https://eatrice.top/post/nginx-conf%E7%9A%84%E5%B8%B8%E7%94%A8%E9%85%8D%E7%BD%AE%E7%B1%BB%E5%9E%8B%E5%92%8C%E6%96%B9%E6%B3%95/
  4. 用Nginx做端口转发(反向代理): https://zhuanlan.zhihu.com/p/108740468