Apache httpd 入门实战(2)--简单使用

这篇具有很好参考价值的文章主要介绍了Apache httpd 入门实战(2)--简单使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文主要介绍 Apache 的实际使用,文中所使用到的软件版本:Centos 7.9.2009、Httpd 2.4.55。

1、反向代理

涉及到 Https 站点时,安装 Apache 时需要启用 ssl,可参考 Apache httpd 入门实战(1)--概念及安装。

1.1、被代理站点为 Http 站点

打开 conf/httpd.conf 文件,修改或新增相应的配置项:

Listen 8080
ServerName 10.49.196.33:8080

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

include conf/extra/my-vhosts.conf

新建 conf/extra/my-vhosts.conf 文件:

<VirtualHost *:8080>
    ServerAdmin admin@abc.com
    ServerName abc.com
    ServerAlias abc.com
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common

    ProxyPass /qwe http://10.49.196.1:9090/qwe
    ProxyPassReverse /qwe http://10.49.196.1:9090/qwe
</VirtualHost>

代理地址为 http://10.49.196.33:8080/qwe,被代理的地址为 http://10.49.196.1:9090/qwe。

1.2、被代理站点为 Https 站点

打开 conf/httpd.conf 文件,修改或新增相应的配置项:

Listen 8080
ServerName 10.49.196.33:8080

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule ssl_module modules/mod_ssl.so

include conf/extra/my-vhosts.conf

新建 conf/extra/my-vhosts.conf 文件:

<VirtualHost *:8080>
    ServerAdmin admin@abc.com
    ServerName abc.com
    ServerAlias abc.com
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common
 
    SSLProxyEngine On
    ProxyPass /asd https://10.49.196.1:9091/asd
    ProxyPassReverse /asd https://10.49.196.1:9091/asd
</VirtualHost>

代理地址为 http://10.49.196.33:8080/asd,被代理的地址为 https://10.49.196.1:9091/asd。

1.3、代理站点启用 Https

1.3.1、生成证书

代理站点启用 Https,需要使用 OpenSSL 创建证书。

A、生成根证书

openssl genrsa -out ca.key
openssl req -new -key ca.key -out ca.csr
openssl x509 -req -days 3650 -in ca.csr -signkey ca.key -out ca.pem

B、生成服务端证书

openssl genrsa -out server.key
openssl req -new -key server.key -out server.csr
openssl ca -days 3650 -in server.csr -cert ca.pem -keyfile ca.key -out server.pem

C、生成客户端证书

openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr
openssl ca -days 1500 -in client.csr -cert ca.pem -keyfile ca.key -out client.pem
openssl pkcs12 -export -clcerts -in client.pem -inkey client.key -out client.p12

使用 OpenSSL 创建证书的详细说明可参考:OpenSSL 介绍(5)--数字证书;这里生成的证书假设都存放在 /home/mongo/ssl 目录下。

1.3.2、Apache 中配置 Https

打开 conf/httpd.conf 文件,修改或新增相应的配置项:

Listen 8443
ServerName 10.49.196.33:8443

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule ssl_module modules/mod_ssl.so

include conf/extra/my-vhosts.conf

新建 conf/extra/my-vhosts.conf 文件:

<VirtualHost *:8443>
    ServerAdmin admin@abc.com
    ServerName abc.com
    ServerAlias abc.com
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common

    SSLEngine on
    SSLCertificateFile /home/mongo/ssl/server.pem
    SSLCertificateKeyFile /home/mongo/ssl/server.key

    ProxyPass /qwe http://10.49.196.1:9090/qwe
    ProxyPassReverse /qwe http://10.49.196.1:9090/qwe

    SSLProxyEngine On
    ProxyPass /asd https://10.49.196.1:9091/asd
    ProxyPassReverse /asd https://10.49.196.1:9091/asd
</VirtualHost>

代理地址为 https://10.49.196.33:8443/qwe、https://10.49.196.33:8443/asd,被代理的分别地址为 http://10.49.196.1:9090/qwe、https://10.49.196.1:9091/asd。

如果需要验证客户端,则配置如下:

<VirtualHost *:8443>
    ServerAdmin admin@abc.com
    ServerName abc.com
    ServerAlias abc.com
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common

    SSLEngine on
    SSLCertificateFile /home/mongo/ssl/server.pem
    SSLCertificateKeyFile /home/mongo/ssl/server.key
    
    SSLVerifyClient require
    SSLCACertificateFile /home/mongo/ssl/ca.pem

    ProxyPass /qwe http://10.49.196.1:9090/qwe
    ProxyPassReverse /qwe http://10.49.196.1:9090/qwe

    SSLProxyEngine On
    ProxyPass /asd https://10.49.196.1:9091/asd
    ProxyPassReverse /asd https://10.49.196.1:9091/asd
</VirtualHost>

2、负载均衡

打开 conf/httpd.conf 文件,修改或新增相应的配置项:

Listen 8080
ServerName 10.49.196.33:8080

LoadModule watchdog_module modules/mod_watchdog.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so  
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so

include conf/extra/my-vhosts.conf

2.1、不考虑 session

新建 conf/extra/my-vhosts.conf 文件:

<VirtualHost *:8080>
    ServerAdmin admin@abc.com
    ServerName abc.com
    ServerAlias abc.com
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common

    <Proxy balancer://mycluster>
        BalancerMember http://10.49.196.1:9090 loadfactor=2
        BalancerMember http://10.49.196.2:9090 loadfactor=3 timeout=3
        ProxySet lbmethod=byrequests
    </Proxy>
    ProxyPass /xyz balancer://mycluster/xyz
    ProxyPassReverse /xyz balancer://mycluster/xyz
</VirtualHost>

lbmethod:负载均衡算法
lbmethod=byrequests:按请求次数负载均衡
lbmethod=bytraffic:按流量负载均衡
lbmethod=bybusyness:按繁忙程度(挂起的请求数)负载均衡
lbmethod=heartbeat:按心跳数负载均衡

loadfactor:负载因子;timeout:超时时间,单位为秒。

代理地址为 http://10.49.196.33:8080/xyz,被代理的地址为 http://10.49.196.1:9090/xyz、http://10.49.196.2:9090/xyz。

2.2、session 粘滞

对应有 session 的情况,同一客户端需要把请求转发到同一个后端服务。新建 conf/extra/my-vhosts.conf 文件:

<VirtualHost *:8080>
    ServerAdmin admin@abc.com
    ServerName abc.com
    ServerAlias abc.com
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common

    <Proxy balancer://mycluster>
        Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/tsp" env=BALANCER_ROUTE_CHANGED
        BalancerMember http://10.49.196.1:9090 loadfactor=2 route=server1
        BalancerMember http://10.49.196.2:9090 loadfactor=3 route=server2
        ProxySet lbmethod=byrequests
        ProxySet stickysession=ROUTEID
    </Proxy>
    ProxyPass /xyz balancer://mycluster/xyz
    ProxyPassReverse /xyz balancer://mycluster/xyz
</VirtualHost>

Header add Set-Cookie:设置名称为 ROUTEID 的 cookie
ProxySet stickysession=ROUTEID:根据 cookie ROUTEID 的值路由到相应的后端服务

2.3、failover

<Proxy balancer://myset>
    BalancerMember http://www2.example.com:8080
    BalancerMember http://www3.example.com:8080 loadfactor=3 timeout=1
    BalancerMember http://spare1.example.com:8080 status=+R
    BalancerMember http://spare2.example.com:8080 status=+R
    BalancerMember http://hstandby.example.com:8080 status=+H
    BalancerMember http://bkup1.example.com:8080 lbset=1
    BalancerMember http://bkup2.example.com:8080 lbset=1
    ProxySet lbmethod=byrequests
</Proxy>

ProxyPass "/images/"  "balancer://myset/"
ProxyPassReverse "/images/"  "balancer://myset/"

A、http://www2.example.com:8080 或 http://www3.example.com:8080 不可用时,才会把流量分配给 http://spare1.example.com:8080 和 http://spare2.example.com:8080。一个备用的节点会替换一个不可用的节点。
B、当 http://www2.example.com:8080、http://www2.example.com:8080、http://www2.example.com:8080、http://www2.example.com:8080 都不可用时,才会把流量分配给热备节点:http://hstandby.example.com:8080。
C、当所有 lbset=0(后端节点的优先级,默认为 0;数值越低的,优先级越高) 的节点(正常节点、备用节点、热备节点)都不可用时,才会把流量分配给备份节点:http://bkup1.example.com:8080 和 http://bkup2.example.com:8080。

2.4、负载均衡管理器

<VirtualHost *:8080>
...
  <Location "/balancer-manager">
      SetHandler balancer-manager
      Require ip 10.49.196.35
  </Location>
...
</VirtualHost>

Require ip:设置可用访问负载均衡器的 ip。

通过负载均衡管理页面(http://10.49.196.33:6060/balancer-manager)可以查看负载均衡的配置和状态,还可以在页面上直接修改配置。

Apache httpd 入门实战(2)--简单使用

 文章来源地址https://www.toymoban.com/news/detail-415532.html

 

参考:https://httpd.apache.org/docs/2.4/howto/reverse_proxy.html。

 

到了这里,关于Apache httpd 入门实战(2)--简单使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Apache Httpd 常见漏洞解析(全)

    Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。 其2.4.0~2.4.29版本中存在一个解析漏洞。 在解析PHP时,1.phpx0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。 ①环境启用 ②编译和运行 ③访问漏洞环境 编写一句话木马上传文件123.php,上传都是失败的

    2024年02月21日
    浏览(35)
  • Apache HTTPD 换行解析漏洞

    Apache HTTPD是一款HTTP服务器,它可以通过 mod_php 来运行PHP网页。 影响版本: Apache 2.4.0~2.4.29 存在一个解析漏洞;在解析PHP时, 1.phpx0A 将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。 我们查看相关配置:读取配置文件,前三行的意思是把以 .php 结尾的文件当成

    2023年04月26日
    浏览(25)
  • apache httpd多后缀解析漏洞复现

    一、漏洞描述 Apache Httpd支持一个文件拥有多个后缀,不同的后缀执行不同的命令,也就是说当我们上传的文件中只要后缀名含有php,该文件就可以被解析成php文件,利用Apache httpd这个特性,就可以绕过上传文件的白名单。 该漏洞和apache版本和php版本无关,属于用户配置不当造成的解

    2024年02月03日
    浏览(29)
  • Apache HTTPD 多后缀解析漏洞复现

    Apache HTTPD 支持一个文件拥有多个后缀,并为不同后缀执行不同的指令。比如,如下配置文件: 其给 .html 后缀增加了media-type,值为 text/html ;给 .cn 后缀增加了语言,值为 zh-CN 。此时,如果用户请求文件 index.cn.html ,他将返回一个中文的html页面。 以上就是Apache多后缀的特性

    2024年02月09日
    浏览(29)
  • Linux 安装httpd(apache)超详细教程

    Apache是一款非凡的应用软件,它是世界上使用最广泛的Web服务器应用程序,并且在商业Web服务器市场中占有超过50%的份额。Apache是类Unix操作系统中使用最广泛的Web服务器应用程序,可以在几乎所有平台上使用,例如Windows等。Apache是取自Native的名字美国部落’ 阿帕奇’,以

    2024年02月06日
    浏览(31)
  • Apache-httpd最新版本升级教程

    Apache-httpd版本太低会导致出现很多漏洞,本次安装的版本为最新的Apache-2.4.57版本,操作系统为CentOS Linux release 7.9.2009 (Core)。首先在服务器上执行命令查看httpd的版本,httpd -v 一、部署安装 1、下载 http://dlcdn.apache.org//apr/apr-util-1.6.3.tar.gz http://dlcdn.apache.org//apr/apr-1.7.4.tar.gz http:

    2024年01月18日
    浏览(39)
  • linux-前端项目由nginx迁移到apache httpd

    1、前端项目存放目录为 /var/www/dist 虚拟主机端口80 反向代理拦截 /prod-api 后端服务地址 http://192.168.0.44:8097 2、在/etc/httpd/conf.d/目录中,创建一个vhost.conf的文件,放入以下内容 3、隐藏httpd的版本号和操作系统信息。 在/etc/httpd/conf.d/目录中,创建一个servertokens.conf的文件,放入

    2024年02月02日
    浏览(27)
  • Apache HTTPD (CVE-2017-15715)换行解析漏洞复现

    组件版本漏洞名称 Apache HTTPD 换行解析漏洞(CVE-2017-15715) 漏洞描述 ​ Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时, 1.phpx0A 将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。 原理 apache-CVE-2017-1

    2024年02月09日
    浏览(30)
  • 【Web】vulhub-httpd apache解析漏洞复现(1)

    目录 ①CVE-2017-15715 ②apache_parsing_vulnerability 贴出源码: 意思就是上传文件的后缀不能是php,php3,php4,php5,phtml,pht 我们看一下.htaccess配置文件  这段代码的作用是告诉 Apache 如何处理以 .php 结尾的请求,确保这些请求能够被正确地解释和执行 PHP 代码,并将结果返回给客户端。 这

    2024年02月04日
    浏览(31)
  • Vulhub之Apache HTTPD 换行解析漏洞(CVE-2017-15715)

    Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其 2.4.0~2.4.29 版本中存在一个解析漏洞,在解析PHP时, 1.phpx0A 将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。 1、docker-compose build、docker-compose up -d启动环境  2、随意上传图片,并发送到repeater  3、切换

    2024年02月13日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包