AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-460494

bolino's questions

Martin Hope
bolino
Asked: 2024-02-15 14:42:25 +0800 CST

省略 nginx 配置中子文件夹的重复作为同一域上的网站

  • 5

我有一个 Debian Web 服务器,其主要/var/www/mymainwebsite服务在 URL 上http(s)://mydomain.com,并且许多独立的 Web 项目也在/var/www( /var/www/mywebsite1、/var/www/website2等) 中,必须在 URL http(s)://mydomain.com/mywebsite1、http(s)://mydomain.com/mywebsite2等上提供服务。

因此,mydomain.com 的 vhost 上的服务器指令包含许多针对子网站的指令,其中的指令location几乎相同(因为nginx 文档表示,当 location 与别名指令值的最后部分匹配时,最好使用 root 指令而不是别名指令)。其中一些包含一些 PHP 和重写规则,但大多数不包含。root

看起来像这样:

server {

    server_name mydomain.com;
    listen 443 quic;
    listen 443 ssl;

    root /var/www/mymainwebsite;

    index index.html index.htm index.php;

    try_files $uri $uri/ =404;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }

    location /mywebsite1 {
        root /var/www/;
    }

    location /mywebsite2 {
        root /var/www/;
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        }
        rewrite ^/mywebsite2/(.*)\.html$        /mywebsite2/index.php?hash=$1 last;
    }

    location /mywebsite3 {
        root /var/www/;
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        }
        rewrite ^/mywebsite3/(.*)\.html$        /mywebsite3/index.php?id=$1 last;
    }

    location /mywebsite4 {
        root /var/www/;
    }

    ...

    location /mywebsite19 {
        root /var/www/;
    }

    error_log /var/www/mydomain.log warn;
}

由于大多数指令都是相似的,有什么方法可以优化和/或避免在此虚拟主机中重复?

nginx
  • 3 个回答
  • 134 Views
Martin Hope
bolino
Asked: 2021-07-10 02:17:08 +0800 CST

调试 Nginx 虚拟主机作为 Uvicorn Python API 的反向代理

  • 0

我有一个(Python,基于 DRF)API,作为 Uvicorn 服务在 Debian 服务器的 8002 端口上运行。它运行时没有明显问题,因为当我这样做时curl http://127.0.0.1:8002/videos/,我得到了预期的 API 响应(我在 Heroku 上部署时也对其进行了测试,没有问题)。

我需要使用 Nginx 公开提供它,所以我配置了一个新的 Nginx vhost 作为反向代理,如下所示:

 upstream my_api {
     server 127.0.0.1:8002;
 }
 
 server {
 
     server_name example.com;
 
     location / {
         # Pass to Uvicorn/Gunicorn web server service
         proxy_pass http://my_api;
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header X-Forwarded-Proto $scheme;
     }

}

error_log /home/www/mydomain.log info;

在浏览器上,我收到 400 Bad Request 错误,无论是 onhttp://example.com/videos/还是 on http://example.com/or http://example.com/whatever。

当我/home/www/example.log跟踪 Nginx 虚拟主机日志文件时,我没有得到任何相关信息或来自其他虚拟主机的日志,如下所示:

2021/07/09 12:05:49 [info] 24698#24698: *233765 client 55.36.148.206 closed keepalive connection
2021/07/09 12:06:12 [info] 24698#24698: *233772 client 217.244.66.202 closed keepalive connection
2021/07/09 12:06:13 [info] 24698#24698: *233775 client closed connection while waiting for request, client: 63.210.40.102, server: 0.0.0.0:80

(注意:唯一端点适用于/videos/路由,但不适用于/videos路由 - 这将在稍后修复,但无论如何不应干扰问题。)

知道如何调试/理解这个 400 错误的来源吗?

nginx gunicorn
  • 1 个回答
  • 555 Views
Martin Hope
bolino
Asked: 2020-12-01 08:59:05 +0800 CST

如何停止 ElasticSearch 后台任务

  • 0

根据 ElasticSearch 的 CLI 帮助,您可以在后台使用elasticsearch -d或启动 ElasticSearch elasticsearch --daemonize。这是我在本地一直使用的,因为它似乎需要更少的资源并且不需要保持终端打开。

但是如何使用 CLI停止守护进程呢?

elasticsearch
  • 1 个回答
  • 169 Views
Martin Hope
bolino
Asked: 2020-11-12 01:02:01 +0800 CST

将虚拟主机从 Apache 迁移到 OpenLiteSpeed

  • 0

阅读 LiteSpeed 网络服务器文档时,我的印象是,LiteSpeed 使用的虚拟主机配置语法与 Apache 配置的语法相同,因此迁移很容易。

但是,在安装 OpenLiteSpeed 并通过 OpenListeSpeed webUI 创建虚拟主机后,我在服务器上创建了以下虚拟主机配置文件:

docRoot                   $VH_ROOT
adminEmails               [email protected]
cgroups                   0

errorlog /www/logs/example.log {
  useServer               0
  logLevel                WARN
}

index  {
  useServer               1
}

它看起来不像我现有的 Apache vhost 语法。我弄错了吗?

我可以在没有 webUI 的情况下对其进行编辑吗?如何向其中添加一些 Apache 指令?假设我想将此 Apache 指令添加到我的 LiteSpeed 虚拟主机中,例如:

<Directory "/www/protected">
    AllowOverride All
    Require valid-user
    AuthType Basic
    AuthName "Protected"
    AuthBasicProvider file
    AuthUserFile /www/htpasswd
</Directory>
virtualhost litespeed
  • 1 个回答
  • 462 Views
Martin Hope
bolino
Asked: 2020-11-10 09:01:07 +0800 CST

LiteSpeed 虚拟主机上的 404

  • 0

我刚刚在运行 Debian 10 的专用服务器上安装了 OpenLiteSpeed 1.6.17,目标是将来替换我的 Apache 2.4.38。

我可以访问 OpenLiteSpeed WebUI,暂时没有更改默认的 HTTP 侦听端口 8088,因为我正在等待一切顺利运行,然后再切换到 80 并删除 Apache。我开始使用 OpenLiteSpeed webUI 创建一个虚拟主机,其中包含以下内容:

Virtual Host Name: www.example.com
Virtual Host Root: /home/www/production/example.com
Config file: $SERVER_ROOT/conf/vhosts/example.com/vhconf.conf
Document Root:  $VH_ROOT
Use Server Index Files: Yes

但是,当我尝试访问时http://www.example.com:8088,我得到一个 404,显然是由 LiteSpeed 提供的。

我忘记了什么?

更多信息:

  • 我使用 webUI 来创建虚拟主机,但它成功地创建了文件/usr/local/lsws/conf/vhosts/example.com/vhost.conf
  • 一般设置说索引文件是 index.html 和 index.php 所以应该没有关于索引文件的问题(即/home/www/production/example.com/index.html)。
  • 虚拟主机根目录仍归 Apache 用户所有,www-data但我确保 LiteSpeed 用户lsadmn属于www-dataLinux 组。
  • 该虚拟主机的特定日志已创建,但为空,好像无法访问它?
litespeed
  • 1 个回答
  • 276 Views
Martin Hope
bolino
Asked: 2020-06-26 03:01:40 +0800 CST

在非标准 HTTP 端口下为运行自己的 Web 服务器的应用程序添加 HTTPS 支持

  • 5

https://example.com我有一台运行 Debian 10 的服务器。由于 LetsEncrypt 证书,它运行 Apache 2.4 以获得可在 下访问的 Web 服务。

但它也运行一个应用程序(Subsonic),它在自己的网络服务器下的端口 4040 上提供一个 Web UI,因为我没有它的虚拟主机,并且当 Apache 停止时它仍然可以访问。因此,目前该应用程序可以在 HTTP 上访问http://example.com:4040。

我知道如何为 Apache vhost 添加 SSL 支持,但是如何为这个应用程序添加 HTTPS 支持,以便它可以在https://example.com:4040或上访问https://example.com:1234?

另外,我是否应该使用与该域已有的 SSL 证书不同的 SSL 证书?

http ssl https apache-2.4
  • 1 个回答
  • 967 Views
Martin Hope
bolino
Asked: 2020-05-27 09:00:33 +0800 CST

OwnCloud 服务器无法加载外部存储文件夹内容

  • 1

我在运行 PHP 7.3、Apache 2.4.38 和 MariaDB 10.3 的 Debian 10 服务器上安装了 ownCloud 10.4。OwnCloud 似乎运行良好,至少从它的 Web UI 来看是这样。

我的服务器上安装了一个硬盘驱动器/mnt/data/,我需要将其用作 ownCloud 服务器存储空间。

(我一直在考虑(并尝试)使用 to 的符号链接/var/www/owncloud/data/user/files/symlink,/mnt/data/但它不起作用。)

我已经添加'files_external_allow_create_new_local' => 'true',到 ownCloud 配置文件config.php中,所以我现在可以成功地使用 ownCloud Web UI 添加本地存储。我已经更改了 的权限,/mnt/data/现在所有内容www-data都由 ownCloud 使用的 Debian HTTP 用户递归拥有。

在ownCloud web UI管理设置的“storage”部分下,我可以添加一个配置为的文件夹/mnt/data/(它显示一个绿色圆圈),然后它会出现在用户的web UI上,但说里面没有文件,是否有我使用 ownCloudphp occ files:scan --all命令重新扫描。

此外,当我添加一个配置为外部磁盘上现有子文件夹的子文件夹时/mnt/data/subfolder,它不会添加它,在 Web UI 的设置中显示一个红色方块作为错误。它还在ownCloud Web UI顶部显示“某些已配置的外部挂载点未连接。请单击红色行以获取更多信息”。

我在这里想念什么?谢谢!

linux debian owncloud
  • 1 个回答
  • 814 Views
Martin Hope
bolino
Asked: 2018-07-03 01:48:32 +0800 CST

以“www-data”用户身份重新启动或重新加载 Apache

  • 2

我在我的 Debian/Apache2.4 服务器上有一个用 Python 编写的 webhook 脚本,因此它在推送 GitHub 时运行部署 .sh 脚本。因此,该脚本由标准 Apache 用户“www-data”执行。我的脚本需要重新启动或重新加载 Apache,但输出显示用户没有这样做的权限:Reloading apache2 configuration (via systemctl): apache2.serviceFailed to reload apache2.service: Access denied. 手动执行时的行为与 www-data ( sudo -u www-data /etc/init.d/apache2 reload) 相同。

因此,我尝试通过在我的 visudo 中添加以下行来使“www-data”具有重新加载或重新启动 Apache 的权限:(www-data ALL = NOPASSWD: /etc/init.d/apache2根据此文档)。

但这并没有改变任何东西。为什么?是因为 Apache 无法重新加载自己吗?我该如何更改权限呢?或者我是否需要其他用户执行脚本,以及如何执行?

linux
  • 1 个回答
  • 6535 Views
Martin Hope
bolino
Asked: 2018-03-14 11:27:30 +0800 CST

通过虚拟环境运行 Django Python 命令的 Cron 作业不起作用

  • 7

我有一个 crontab 文件,据说在加载项目虚拟环境后执行 Django 命令:

*/1 * * * * source /home/virtualenvs/mydjangoproject-venv/bin/activate && python /home/www/production/mydjangoproject/manage.py mydjangocommand

...但它绝对没有任何作用。cron 日志输出没有特别的问题:

Mar 13 19:51:01 110 CRON[23807]: (root) CMD (source /home/virtualenvs/mydjangoproject-venv/bin/activate && python /home/www/production/mydjangoproject/manage.py mydjangocommand)

不用说,当在 shell 中复制粘贴时,命令本身可以完美运行。

我知道它与我的 crontab 的环境变量有关,但是我对这个问题非常缺乏教育,而且我不知道该怎么做,尤其是当它在 python 虚拟环境下运行时。它应该使用我的用户环境变量吗?来自virtualenv的那些?如何实施?谢谢!

注意:如果有帮助,我的 crontab 环境变量有以下输出(通过 crontab 将“env”导出到文件时):

HOME=/root
LOGNAME=root
PATH=/usr/bin:/bin
LANG=en_US.UTF-8
SHELL=/bin/sh
LC_ALL=en_US.UTF-8
PWD=/root

以及项目虚拟环境下的以下环境变量:

TERM=xterm-256color
SHELL=/bin/bash
SSH_CLIENT=x.x.x.x 53007 22
OLDPWD=/root/production/mydjangoproject
SSH_TTY=/dev/pts/0
LC_ALL=en_US.UTF-8
USER=root
VIRTUAL_ENV=/home/virtualenvs/mydjangoproject-venv
MAIL=/var/mail/root
PATH=/home/virtualenvs/mydjangoproject-
venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/root
LANG=en_US.UTF-8
PS1=(mydjangoproject-venv)${debian_chroot:+($debian_chroot)}\u@$(hostname -f):\w\$ 
SHLVL=1
HOME=/root
LS_OPTIONS=--color=auto --group-directories-first
LOGNAME=root
SSH_CONNECTION=x.x.x.x 53007 x.x.x.x 22
LC_CTYPE=en_US.UT
cron
  • 1 个回答
  • 3888 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve