标签: apache2

Apache 2.2重定向到SSL*然后*做auth(使用解决方案<但它是废话吗?)

似乎是apache的地方所以这里去:)

古老的问题:我如何重定向HTTP-> HTTPS,然后只有在HTTPS时才进行身份验证?

哦 - 我想把它大部分放在一个可以包含在多个<directory>或<location>块中的片段中,所以没有基于虚拟主机级别随机路径的重写...

好吧,这就是我所拥有的似乎有用的东西:

在VirtualHost块的顶部

# Set ssl_off environment variable 
RewriteEngine on
RewriteCond %{HTTPS} =on
RewriteRule ^ - [E=ssl]
Run Code Online (Sandbox Code Playgroud)

在位置或目录块中

RewriteEngine on
# Case 1 redirect port 80 SSL
RewriteCond %{HTTPS} !=on
RewriteCond %{SERVER_PORT} =80
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [R=301]

AuthType Basic
AuthBasicProvider external
AuthExternal auth_pam
AuthName "My Underpants"
AuthzUnixgroup on
Order Deny,Allow
Deny from all
Allow from env=!ssl
Satisfy any
Require group nice-users
Run Code Online (Sandbox Code Playgroud)

加号

所有这些条件都可以将Require's抽象为一个片段文件,以便在每个位置包含在一行中

它修复了强制每个位置的SSL和身份验证,因此错误的可能性更小

血淋淋的地狱,这很难直观!我所知道的一切可能都很脆弱......

有没有更好的方法(不是我发现的......)?

如果有任何严重的缺陷,将非常欢迎评论:)

如果Apache有一个合理的配置语法与泛型,Aside Life会更容易

<If expression> </ If> …

apache mod-rewrite apache2 basic-authentication apache2.2

7
推荐指数
1
解决办法
3597
查看次数

.htaccess将图像文件重写为php脚本

以下是我现在所拥有的内容,.htaccess以及将来应该使用的内容:

RewriteEngine On

RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Run Code Online (Sandbox Code Playgroud)

问题是:

我该怎么做才能改写 /tmp/some_image.png -> /image.php?file=some_image.png

我试图制定自己的规则,但没有成功.

谢谢.

.htaccess mod-rewrite rewrite apache2

7
推荐指数
1
解决办法
2万
查看次数

什么:: $ 1在htaccess中意味着什么?

我一直在浏览symfony2框架源代码.在他们的示例网站的htaccess文件中,我发现%{REQUEST_URI}::$1如下:

RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
Run Code Online (Sandbox Code Playgroud)

该规则上面的评论解释道

以下内容将所有其他查询重写为前端控制器.该条件确保如果您使用Apache别名进行大规模虚拟主机托管,则会预先设置基本路径以允许正确解析app.php文件; 它也适用于非混淆环境,提供安全,一刀切的解决方案.

但是,这并不能解释::$1::\2.

他们是反向引用吗?如果没有,他们是什么?他们的目的是什么?

.htaccess mod-rewrite apache2

7
推荐指数
2
解决办法
8365
查看次数

通过 apache 提供静态文件

我是整个 mod_wsgi 的新手,并通过 apache 提供文件。我对烧瓶真的很满意,但这是我无法理解的。我做了hello-world程序,成功显示hello world!现在我想显示一个图像文件。所以我将我的 hello-world.py 更新为:

from flask import *
yourflaskapp = Flask(__name__)

@yourflaskapp.route("/")
def hello():
    file="203.jpg"
    return render_template("hello.html",file=file)
#   return"HEY"
if __name__ == "__main__":
    yourflaskapp.run()
Run Code Online (Sandbox Code Playgroud)

我的目录结构类似于:/var/www/hello-world

/hello-world
    test.py
    yourflaskapp.wsgi
    /static
        -203.jpg
    /templates
        -hello.html
Run Code Online (Sandbox Code Playgroud)

我的模板很简单:

<!DOCTYPE html>
<html><head><title>hi</title></head>
<body>
<img src="{{url_for('static',filename=file)}}"/>
</body></html>
Run Code Online (Sandbox Code Playgroud)

我的 apache conf 文件是:

<VirtualHost *:80>
     WSGIDaemonProcess yourflaskapp
     WSGIScriptAlias / /var/www/hello-world/yourflaskapp.wsgi
     Alias /static/ /var/www/hello-world/static
     Alias /templates/ /var/www/hello-world/templates
     <Directory /var/www/hello-world>
            WSGIProcessGroup yourflaskapp
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
     </Directory>
        <Directory /var/www/hello-world/static>
            Order allow,deny
            Allow from all …
Run Code Online (Sandbox Code Playgroud)

python static mod-wsgi apache2 flask

7
推荐指数
1
解决办法
1万
查看次数

在Apache服务器上安装mod-wsgi时出错

当我开始这个步骤时,我正在安装mod-wsgi并遵循本指南:

要根据Apache的安装将Apache模块安装到Apache模块的标准位置,请运行:

make install
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时,sudo make install我得到了这个错误

wrong number of arguments to instdso.sh
Usage: instdso.sh SH_LIBTOOL-value dso-name path-to-modules
apxs:Error: Command failed with rc=65536
Run Code Online (Sandbox Code Playgroud)

我尝试在网上搜索此错误,但找不到任何东西和mod-wsgi的安装问题页面根本没有谈论这个错误.知道什么可能是错的吗?

mod-wsgi apache2 python-2.7

7
推荐指数
1
解决办法
870
查看次数

停止 Apache 服务后,为什么我的 IP 地址仍然可以看到 Apache 默认页面?

我想安装Nginx,但是80端口已经被Apache2占用了。我通过以下方式阻止它:

$ sudo kill -9 my-apache-pid

$ sudo service apache2 stop

$ sudo /etc/init.d/apache2 stop
[ ok ] Stopping apache2 (via systemctl): apache2.service.
Run Code Online (Sandbox Code Playgroud)

我可以安装 Nginx。我用sudo systemctl status nginx。它显示运行良好,Apache2 似乎不活跃。但是当我在浏览器中输入 IP 地址时,它仍然显示 Apache2 hello-page。为什么?

linux apache2 nginx

7
推荐指数
1
解决办法
3171
查看次数

须藤:pecl7.2-sp:找不到命令

我需要在 PHP 7.2 上安装GeoIP。为此,我使用以下命令 -

sudo apt-get -y install gcc make autoconf libc-dev pkg-config
sudo apt-get -y install libgeoip-dev
sudo pecl7.2-sp install geoip-beta
Run Code Online (Sandbox Code Playgroud)

前两个命令已成功运行,但是在运行第三个命令时出现以下错误 -

sudo: pecl7.2-sp: command not found
Run Code Online (Sandbox Code Playgroud)

任何建议,如何在 php 7.2 上安装 pecl 或以任何其他方式在 php 7.2 上安装 GeoIP。

apache apache2 apt-get php-extension php-7.2

7
推荐指数
1
解决办法
2万
查看次数

apache2.service:控制进程退出,代码=退出状态=139

我在 ubuntu 18.04 上安装了 apache2。这是具有所有默认配置的全新安装。

我试图启动 apache2 但失败了。这就是我所看到的。

# systemctl status apache2.service 
? apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           ??apache2-systemd.conf
   Active: failed (Result: exit-code) since Wed 2020-03-11 23:17:35 WIB; 13s ago
  Process: 9151 ExecStart=/usr/sbin/apachectl start (code=exited, status=139)

Mar 11 23:17:35 xdn.id systemd[1]: Starting The Apache HTTP Server...
Mar 11 23:17:35 xdn.id apachectl[9151]: Segmentation fault
Mar 11 23:17:35 xdn.id apachectl[9151]: Action 'start' failed.
Mar 11 23:17:35 xdn.id apachectl[9151]: The Apache error log …
Run Code Online (Sandbox Code Playgroud)

apache ubuntu apache2

7
推荐指数
2
解决办法
1万
查看次数

Apache2 PHP docker 容器,如何将错误作为 stderr 并将信息作为 stdout 记录到容器日志中?

我目前正在使用官方php:7.4-apache映像,我想将一些信息和错误记录到 docker 日志中。

我意识到 PHP 不直接记录,而是记录到 Apache2 服务器,因为这是解释 PHP 的服务器。

尽管如此,我还是尝试了使用官方 docker 文档中的信息的直接方法:

<?php

error_log('testlog', 3, '/proc/self/fd/1');
error_log('testerror', 3, '/proc/self/fd/2');
Run Code Online (Sandbox Code Playgroud)

这给了我一个“无法打开流,文件不存在”的警告。

我还注意到,简单地调用error_log('test')会创建以下日志,而不会写入 stderr:

[Tue Nov 10 11:39:46.005650 2020] [php7:notice] [pid 17] [client 172.25.0.1:56576] test
Run Code Online (Sandbox Code Playgroud)

我试图弄清楚是否有任何特殊的方法可以向 Apache2 stdout/stderr 发送消息,但我找不到任何有用的东西。

有没有办法实现这一点,或者这只是在容器中记录 PHP 的错误方法?

!!编辑:!!

到目前为止,我已经设法发现原始 Dockerfile 中的日志定义在文件中处理为/dev/stderr& /dev/stdout

我还发现了以下可能性:

error_log('test', 3, 'php://stdout');
error_log('testerr', 3, 'php://stderr');
Run Code Online (Sandbox Code Playgroud)

但这会产生以下输出:

> test 
> 172.25.0.1 - - [18/Nov/2020:13:19:48 +0000] "GET / HTTP/1.1" 200 229 "-" "Mozilla/5.0 (Windows …
Run Code Online (Sandbox Code Playgroud)

php logging apache2 docker

7
推荐指数
1
解决办法
2352
查看次数

如何在apache2上运行FastAPI?

我已经使用 fastapi 开发了一个 api,它将充当接收短信请求并调用短信 api 发送所述短信的包装器,现在我已准备好部署它。这是代码:

import logging

import uvicorn
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from fastapi.middleware.trustedhost import TrustedHostMiddleware

import verifier

logging.basicConfig(
    format='%(asctime)s - %(funcName)s - %(levelname)s - %(message)s',
    level=logging.INFO
)

# get logger
logger = logging.getLogger(__name__)


bot_verifier = None


class DataForBot(BaseModel):
    number: str
    msg_txt: str


def get_application():
    app = FastAPI(title='bot_wrapper', version="1.0.0")

    return app


app = get_application()


@app.on_event("startup")
async def startup_event():
    global bot_verifier
    try:
        bot_verifier = await verifier.Verifier.create()
    except Exception as e:
        logger.error(f"exception occured during bot …
Run Code Online (Sandbox Code Playgroud)

apache2 python-3.x gunicorn asgi fastapi

7
推荐指数
1
解决办法
1万
查看次数