侧边栏壁纸
博主头像
伯淳的个人博客博主等级

行动起来,活在当下

  • 累计撰写 35 篇文章
  • 累计创建 5 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Apache2反向代理设置

Administrator
2024-03-16 / 0 评论 / 2 点赞 / 24 阅读 / 3821 字

1.操作环境

操作系统:debian 12

2.预处理

socat申请ssl证书会用到

apt update -y && apt upgrade -y && apt install -y curl wget sudo socat

3.安装Apache2

apt install apache2

4.启用必要的模块

确保服务器已经安装并启用了"mod_proxy"和"mod_proxy_http"模块。

运行下面命令来启用他们:

sudo a2enmod proxy
sudo a2enmod proxy_http

或者编辑Apache的主配置文件(通常位于/etc/apache2/apache2.conf),增加下面内容:

LoadModule proxy_module /path/to/mod_proxy.so #修改路径

LoadModule proxy_http_module /path/to/mod_proxy_http.so #修改路径

Apache模块一般位于/usr/lib/apache2/modules内,故上述内容改为

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so

LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so

5.配置Apache配置文件

如/etc/apache2/sites-enabled/000-default.conf

打开上面文件,或者可以在同一目录下新增一个文件。

添加以下内容:

<VirtualHost *:80>
    ServerName 域名
    ProxyPreserveHost On

    ProxyPass / http://ip:端口/
    ProxyPassReverse / http://ip:端口/
</VirtualHost>

更改配置后,需要重启Apache服务使其生效:

sudo systemctl restart apache2

6.启用SSL的设置

6.1申请ssl证书

curl https://get.acme.sh | sh
~/.acme.sh/acme.sh --register-account -m xxxx@gmail.com
~/.acme.sh/acme.sh --issue -d 网站域名 --standalone

6.2下载证书

~/.acme.sh/acme.sh --installcert -d memos.dongbaicun.top --key-file /etc/apache2/certs/key.pem --fullchain-file /etc/apache2/certs/cert.pem

注意/etc/apache2/certs是存放证书的路径,可以更改,不过要跟下面Apache配置文件相一致。

6.3启用SSL模块

sudo a2enmod ssl

6.4配置Apache配置文件

打开文件/etc/apache2/sites-enabled/000-default.conf

增加一下内容:

<VirtualHost *:443>
    ServerName 域名
    SSLEngine on
    SSLCertificateFile /etc/apache2/certs/cert.pem #刚刚申请证书的路径
    SSLCertificateKeyFile /etc/apache2/certs/key.pem #刚刚申请证书的路径

    ProxyPreserveHost On
    ProxyPass / http://ip:端口/
    ProxyPassReverse / http://ip:端口/
</VirtualHost>

更改配置后,需要重启Apache服务使其生效:

sudo systemctl restart apache2

6.5强制https访问

上面的修改如果是用http://域名还是能够访问的,下面设置http强制转换成https访问,修改配置文件/etc/apache2/sites-enabled/000-default.conf,只需修改80端口部分即可:

<VirtualHost *:80>
    ServerName 域名
    Redirect permanent / https://域名/
</VirtualHost>

<VirtualHost *:443>
    ServerName 域名
    SSLEngine on
    SSLCertificateFile /etc/apache2/certs/cert.pem
    SSLCertificateKeyFile /etc/apache2/certs/key.pem

    ProxyPreserveHost On
    ProxyPass / http://ip:端口/
    ProxyPassReverse / http://ip:端口/
</VirtualHost>

重启Apache服务:

sudo systemctl restart apache2

2

评论区