首页 > 编程语言 >[Kyana]服务器php+https配置

[Kyana]服务器php+https配置

时间:2022-11-09 12:11:22浏览次数:30  
标签:php nginx apt ssl https 使用 Kyana your

00|前排提示

本文涉及的apache、nginx和caddy三者并无优劣之分,各有擅场,在个人博客使用时选取自己喜欢的即可。

如无特殊提示,本文默认环境为Ubuntu Server 20.04(Linux 5.4)、php7.4、php7.4-fpm;软件安装默认使用apt源,安装后配置文件默认在"/etc/{软件名}"下。本文默认读者已经配置开放了相应的防火墙端口,并使用root权限。

01|PHP

使用 apt install php安装完php之后一般需要安装模块使得php可以与服务器软件、数据库软件配合。

php-cgi

cgi全称是Common Gateway Interface公共网关接口,服务器软件将php请求转发给php-cgi,由php解释执行后,结果再通过php-cgi返回给服务器软件。

现在常用的php-cgi是php-fpm,全称是php fastcgi process manager,php快速公共网关接口进程管理器。使用 apt install php-fpm安装(或 apt install php7.4-fpm,数字换成相应的php版本号(使用 php -v查看),后续服务管理同理)。

php-mysql

为了让php和数据库配合使用需要安装php对相应数据库的模块,不需要额外配置,安装完成即可使用。使用 apt install php-mysql安装,其它数据库数据库可以使用 apt search {数据库名}配合 grep查找相应模块名安装使用。

02|SSL证书

https是在普通http协议上加入安全套接字实现的加密,安全套接字层一般称SSL(security socket layer)。

在apache和nginx中使用的是阿里云轻量应用服务器提供的免费证书,与一般SSL证书的申请分发流程无区别。

SSL证书申请

在控制台申请SSL证书,填入域名和个人信息(姓名、身份证号、地址、邮箱)后,获得一个在TXT类型的DNS记录。按照相应指引在域名解析处设置好"_dnsauth"解析并验证,即可等待下发。下发后下载相应服务器软件的证书并上传到服务器备用。"__dnsauth"记录在证书下发后就可以删除。

03|Apache

经典的服务器软件,在Debian系分发名是"apache2",在Redhat系分发名是"httpd"。“apache/阿帕奇”同时也是武装直升机名字,该名来源于一个被美国人灭族的印第安人部落。

apache的功能多数通过加载模块实现,如php、rewrite、ssl等。一般通过 apt install apache2安装完成apache后,就可以通过 service/systemctl对apache服务管理,通过 a2enmod对apache模块管理。如果不能,如果不能,前者可以自行搜索创建相应脚本;后者可以尝试安装"apache-common"包。

使用php

安装完php-fpm后,Ubuntu会在安装日志末尾提示两条"a2enmod"和"a2enconf"命令,分别用来启用php-fpm模块、启用有关php-fpm模块的默认配置。执行完成后重启apache一般即可配置完成apache+php环境。

可以在默认网页存放位置 /var/www/html/下使用命令创建测试文件并访问(开启服务器软件和php-fpm服务)查看详情。

echo "<?php phpinfo();" > info.php

使用ssl

安装apache时默认安装了SSL模块但没有启用,我们只需要使用 a2enmod ssl命令启用即可。启用后可以看到 /etc/apache2/mods-enabled/目录下多了"ssl.load"和"ssl.conf"两个文件就是成功。

/etc/apache2/sites-available/default-ssl.conf文件使用软连接或者复制到 /etc/apache2/sites-enabled/目录下,编辑文件配置ssl,本文使用vim。使用 a2enmod命令启用"rewrite"模块,来将http页面通过301重定向至https页面。

下面是读者的ssl配置,将需要的字段替换即可。

<VirtualHost *:443>   
    ServerName  {your_cert_domain}
    DocumentRoot  {your_page_dir}
    SSLEngine on
    SSLCertificateFile {your_crt_filepath}
    SSLCertificateKeyFile {yout_key_filepath}
    SSLCertificateChainFile {your_chain_crt_filepath}
</VirtualHost>

将下面配置的文件替换读者页面的配置,复制粘贴即可。"RewriteEngine"两项是使用重写模块替换掉http页面。

<VirtualHost *:80>
        ServerName {your_second_domain}
        ServerAlias {your_main_domain}
        DocumentRoot {your_page_dir}
        RewriteEngine On
        RewriteRule ^/(.*?)$ https://{$ServerName}/$1 [R]
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

04|Nginx

内置邮件服务和反向代理的异步高性能服务器软件,最初由俄罗斯人开发。常用在负载均衡等场景下,分支软件有国人章亦春开发的openresty和淘宝开源的Tengine。

Nginx的模块是在编译时配置,如果使用 nginx -V没有看到相应模块,需要重新安装有模块的nginx或者自行编译。通过apt安装的nginx默认已经支持cgi和ssl,看到输出中有"fastcgi"和"ssl"一般即可。

反向代理:正向代理是服务器软件为访问的用户提供代理,访问服务器主机上的资源;反向代理为服务器主机提供代理,将负载均衡至每一台服务器,使用户感知只是一台服务器。

使用php

nginx的模块不需要额外开启,因此只需要配置文件即可。nginx配置文件使用server字段对每一台服务器主机单独配置,将 /etc/nginx/sites-available/default文件复制到 /etc/nginx/sites-enabled/目录下并修改。需要替换的字段如下,或者取消部分注释即可,在Ubuntu上需要使用unix格式与php-fpm建立联系,tcp格式似乎无法正常使用。localtion行复杂的正则是为了nginx支持php跨站参数,否则默认防盗链设置会阻止像typecho这样的后台登录。

server {
        listen          80;
        server_name     your_domain.com;
        root            your_page_dir;
        index           index.html index.htm index.php;

        location ~ .*\.php(\/.*)*$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass  unix:/var/run/php/php7.4-fpm.sock;
        }
    }

使用ssl

nginx的ssl配置相对简单,只需要在上文的配置文件的server字段加两行配置,指明ssl证书位置即可。

ssl_certificate     your_pem_filepath
ssl_certificate_key  your_key_filepath

重定向http页面也可以配置实现,作者使用简单粗暴关闭80端口。

05|Caddy

caddy是使用go语言创建的新服务器软件,特点是配置简单人性化同时有不错的性能、支持反向代理。Ubuntu默认不提供caddy源,但可以参考官网指南向包管理器中添加。

apt install -y debian-keyring debian-archive-keyring apt-transport-https

curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg

curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list

添加完成后使用 apt update获取caddy源并使用 apt install caddy安装即可。

使用php

caddy配置只需要修改 /etc/caddy/Caddyfile文件即可,只需如下写几行即可。需要注意的是fastcgi后的星号*必须要有,和root后星号一样,意为匹配所有文件。file_server字段用于支持css这样的静态文件。

your_domain {
        root * your_page_dir
        file_server
        php_fastcgi * unix//run/php/php7.4-fpm.sock
}

使用ssl

只需要在上文your_domain字段增加一行指明证书文件位置即可,可以使用nginx格式证书。

tls your_pem_filepath your_key_filepath

标签:php,nginx,apt,ssl,https,使用,Kyana,your
From: https://www.cnblogs.com/kyana/p/16873191.html

相关文章

  • 学习笔记-ThinkPHP 之 SQLI审计分析(三)
    ThinkPHP之SQLI审计分析(三)Time:9-23影响版本:ThinkPHP=5.1.22Payload:/public/index.php/index/index?orderby[id`|updatexml(1,concat(0x7,user(),0x7e),1)%23]=1......
  • 学习笔记-ThinkPHP5之SQLI审计分析(二)
    ThinkPHP之SQLI审计分析(二)Time:9-3影响版本:ThinkPHP=5.0.10Payload:/public/index.php/index/index?username[0]=notlike&username[1][0]=&username[1][1]=&userna......
  • 学习笔记-ThinkPHP5之SQLI审计分析(一)
    ThinkPHP5之SQLI审计分析(一)Time:8-31影响版本:5.0.13<=ThinkPHP<=5.0.15、5.1.0<=ThinkPHP<=5.1.5Payload:/public/index.php/index/index?username[0]=inc&username[1]=......
  • 浅谈PHP设计模式的代理模式
    简介:代理模式,是结构型的设计模式。用于为其它对象提供一种代理以控制对这个对象的访问。目标对象可以是远程的对象、创建开销大的对象或需要安全控制的对象,并且可以在不......
  • CakePHP 2.x十分钟博客教程(二):控制器、模型与视图
     在上篇​​CakePHP教程​​中,为大家介绍了CakePHP的安装与配置过程。你的CakePHP框架现在应该已经能够建立应用程序了,本文为大家带来CakePHP如何创建控制器、模型及视图文......
  • 用 Gearman 分发 PHP 应用程序的工作负载
    尽管一个Web应用程序的大部分内容都与表示有关,但它的价值与竞争优势却可能体现在若干专有服务或算法方面。如果这类处理过于复杂或拖沓,最好是进行异步执行,以免Web服务......
  • phpstrom docker swoole win10
    构建镜像dockerfile点击查看代码#现在我们需要配置一些东西。#编译参数,用于指定Swoole版本ARGswoole_ver#保存到环境变量,如果没有传递就给默认值ENVSWOOLE_......
  • nginx 协议修改 HTTP改为HTTPS
    协议修改HTTP改为HTTPS1.存在证书和私钥1.把证书和私钥放到指定位置直接把证书和私钥放到nginx容器映射物理目录的conf/conf.d中(这个目录自定义,想放在哪里都可以,只要可......
  • 说说http,https协议
    HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络......
  • thinkphp6 url rewrite
    https://www.kancloud.cn/manual/thinkphp6_0/1037488URL重写可以通过URL重写隐藏应用的入口文件index.php[Nginx]在Nginx低版本中,是不支持PATHINFO的,但是可以通过在Ngin......