2

关于反向代理的两种实践方式

 2 years ago
source link: https://www.xn2001.com/archives/604.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
请注意,本文编写于 372 天前,最后修改于 289 天前,其中某些信息可能已经过时。

如果对反向代理不明觉厉的话,可以看一下我之前写过的Nginx笔记

Nginx 进行反向代理

安装 Nginx

# 添加 Nginx 源
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

# 安装 Nginx
sudo yum install -y nginx

# 启动 Nginx
sudo systemctl start nginx.service

# 设置开机自启 Nginx
sudo systemctl enable nginx.service

配置 Nginx

配置文件一般以 nginx.conf 命名,最简单的配置如下

server {
    listen 80;

    server_name example.com www.example.com;

    location / {
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_pass http://127.0.0.1:3000/;
    }
}
  • server_nameexample.com www.example.com 修改为自己的域名。
  • proxy_passhttp://127.0.0.1:3000/ 修改为已经部署的服务
# 检查配置是否有误
sudo nginx -t

# 重载 Nginx 配置
sudo nginx -s reload

配置 SSL 证书

该操作的表面现象就是 将 HTTP 换成 HTTPS 协议,具体请学习计算机网络

注意:需要在防火墙开启443端口

下面的代码为自动申请免费的SSL证书,如果你自己准备了SSL证书,请查看相关证书提供的教程。

# 安装 certbot 以及 certbot nginx 插件
sudo yum install certbot python2-certbot-nginx -y

# 执行配置,中途会询问你的邮箱,如实填写即可
sudo certbot --nginx

# 自动续约
sudo certbot renew --dry-run

到这里,关于 Nginx 的配置也就完成了,你可以访问一下自己的域名查看效果。

Caddy 进行反向代理

Caddy 是一款使用 Go 语言开发的 Web 服务器。其配置更为简洁,并可以自动申请及配置 SSL 证书,这两年非常火的一个 HTTP Server

有人说 Caddy 在性能比不上 Nginx,我不知道,但是在 上手难度/配置难度 确实更加友好。

Caddy支持 自动签订 Let’s Encrypt SSL 证书,只需要提供一个邮箱,他会自己申请、配置和续约 SSL证书。(不用再做过多配置)

安装 Caddy

# 安装 Caddy 软件包
yum install caddy -y

配置 Caddy

# 使用 vim 编辑 Caddyfile
vim /etc/caddy/conf.d/Caddyfile.conf
https://www.simple.com {
    gzip
        tls [email protected]
        proxy / localhost:port {
        transparent
    }
}
  1. https://www.simple.com 改为自己的域名。
  2. tls 后面的 [email protected] 改为自己的邮箱地址,这是用于自动申请 SSL 证书用的。需要注意的是,不需要你自己配置 SSL 证书,而且会自动帮你续签。
  3. localhost:port 请将 port 修改为 服务 的运行端口

修改完成之后启动 Caddy 服务即可。

# 开启自启 Caddy 服务
systemctl enable caddy

# 启动 Caddy
service caddy start

# 停止运行 Caddy
service caddy stop

# 重启 Caddy
service caddy restart

# 查看 Caddy 运行状态
service caddy status

如果 Caddy 启动出现如 [/usr/lib/systemd/system/caddy.service:23] Unknown lvalue 'AmbientCapabilities' in section 'Service' 等问题

请使用 yum update -y 更新系统。

然后再使用 service caddy restart 重启,目前已知 CentOS 7.3 会出现该问题。

配置多网址重定向到主网址,比如访问 simple.com 跳转到 www.simple.com

# 使用 vim 编辑 Caddyfile
vim /etc/caddy/conf.d/Caddyfile.conf

我们在原有的基础上添加以下配置

https://simple.com {
    redir https://www.simple.com{url}
}

https://simple.comhttps://www.simple.com{url} 修改为自己需要的网址就行了,比如我要求访问 xn2001.com 跳转到 www.xn2001.com

https://xn2001.com {
    redir https://www.xn2001.com{url}
}

https://www.xn2001.com {
    gzip
        tls [email protected]
        proxy / localhost:3000 {
        transparent
    }
}

最后我们重启 Caddy 即可。

关于 Caddy 反向代理的配置也就完成了,现在你可以访问一下自己的域名测试效果。



About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK