Nginx反向代理

本文最后更新于:2022年4月26日 下午

Nginx反向代理

众所周知Nginx可以做流量转发。本文将介绍手动编译Nginx源码并做反向代理的具体步骤。需要一个域名和一台服务器,最好是境外服务器因为境外服务器不需要ICP备案,比较省事。

  • 为啥不直接用域名解析做转发而要用服务器呢?你懂的。
  • 据我所知,阿里云的香港服务器仍然有墙
  • 下文以ubuntu系统为例,使用root用户操作

1.域名解析

在自己域名的控制台中添加解析条目,随便给一个子域名,IP指向你服务器的地址。

没有ICP备案的域名不能解析指向中国大陆的IP地址。

2.安装软件

1
2
# 更新软件库、升级已有程序、安装编译工具包和nginx
apt-get update && apt-get -y upgrade && apt-get install -y build-essential nginx

这一步中,Nginx已经安装好了,但是我们不打算直接使用它。因为这样直接使用官方源码编译的对一些插件会不兼容或导致你机器的服务不稳定。安装好后它会在机器内留一套适合你本机器的编译参数,我们将使用这些参数自己编译一个。

3.查看参数

1
2
# 查看参数,记录下来其中的nginx版本和参数
nginx -V

image-20220420091241650

4.编译源码

1
2
3
4
5
6
# 此处下载的版本号要和你上面记录的版本号一致
wget https://nginx.org/download/nginx-1.14.0.tar.gz
# 解压
tar -xvf nginx-1.14.0.tar.gz && cd nginx-1.14.0
# 确认参数
./configure [你刚刚保存那一堆参数]

确认参数过程中会有很多./configure: error: the XXX module requires the XXX library,不要慌,这是正常的。一个一个去查缺失的这个包怎么安装。一般来说就是apt-get install XXX。重复尝试确认参数,直到最终显示Configuration summary,这说明需要的库已经都安装好了。

5.安装Nginx

1
2
3
4
5
6
# 编译
make
# 安装
make install
# 安装文件放入之前nginx的安装目录
cp -rf objs/nginx /usr/sbin/nginx

6.配置SSL证书

有SSL证书才能使用https。

1
2
3
4
5
# certbot官网给出的操作。使用snap包管理器
snap install core && snap refresh core && snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
# 生成SSL文件
certbot certonly --nginx -d [你的域名] -m [你的邮箱]

这个证书90天就会过期。快过期了会给你的邮箱发邮件提醒。所以请使用有效邮箱。

  • 接下来会有两个确认,第一个是是否同意使用条款,输入yes;第二个是是否同意共享你的一些数据给非盈利组织,输入no
  • 接下来提醒生成成功,并给出了证书和密钥的储存位置。记下这两个位置
  • 编辑/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
events {
worker_connections 1024;
}

http {
sendfile on;
keepalive_timeout 65;
types_hash_max_size 2048;

include /etc/nginx/mime.types;
default_type application/octet-stream;

server {
listen 443 ssl;
server_name [你的域名];

ssl_certificate [证书地址];
ssl_certificate_key [密钥地址];

location / {
proxy_pass [你要代理的网址];
}
}
}

7.测试运行

1
2
3
4
# 测试配置文件
ngixn -t
# 如果测试成功,重启nginx服务
service nginx restart

此时应该可以正常反代了,使用你自己的域名访问别的网站。Happy surfing on the Internet !


本博客所有文章除特别声明外均为原创,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!