问题列表 - 第5200页

systemd 进程 stdout/stderr

当我手动运行该服务时,它会在启动时记录一些内容。

但当它作为 systemd 进程启动时,我无法在任何地方找到该日志。

journalctl -u <service>只显示服务启动和停止的记录,不显示实际的服务输出。

我尝试将配置添加到/etc/systemd/system/<service>.service文件中:

StandardOutput=append:/var/opt/<service>/stdout.log
StandardError=append:/var/opt/<service>/stderr.log
Run Code Online (Sandbox Code Playgroud)

但这也没有帮助 - 文件是在守护进程和服务重新启动后创建的,但它们是空的。

我缺少什么?

感谢您的任何建议,我没有想法。

logging stdout systemd

6
推荐指数
1
解决办法
9939
查看次数

从 nginx url 中删除井号 (#) 并重定向

我想获取一个网址,添加前缀并从网址中删除井号。例如,从 http://localhost:8088/app1/#/hello 重定向到 http://localhost:8088/apps/app1/hello。

我已经尝试过这个,但它似乎不起作用:

  location /app1/ {
    rewrite ^([^#]*)([#])\/(.*) /apps$1$3 permanent;
  }
Run Code Online (Sandbox Code Playgroud)

这似乎与哈希标记有关。我可以从 http://localhost:8088/app1/q/hello 转到 http://localhost:8088/apps/app1/hello :

  location /app1/ {
    rewrite ^([^q]*)([q])\/(.*) /apps$1$3 permanent;
  }
Run Code Online (Sandbox Code Playgroud)

我需要做些什么来处理重定向中的哈希标记吗?

nginx redirect

3
推荐指数
1
解决办法
3229
查看次数

Azure 中的基本公共 IP 和标准公共 IP 有什么区别?

每当我创建虚拟机时,它都会直接从“公共IP地址 - 基本”配额中获取,何时会使用标准?以及在哪里设置呢?

它们之间有什么区别?

ips

azure azure-networking public

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

如何确保Cloud-Init恰好运行一次且仅运行一次?

据我所知,cloud-init每次配置更改时都会运行。不仅是系统第一次启动,而且每次提供的配置发生更改时。这在某种程度上是有道理的,因为我想很难定义“第一次”(克隆的虚拟机在被冻结并用作模板之前已经运行过,所以它从来都不是真正的第一次)。然而,我时不时地\xe2\x80\x94,很少,但仍然\xe2\x80\x94发现cloud-init当它们重新启动时,它会在已配置的系统上重新运行。

\n

cloud-init然而,当在完全配置的系统上运行时,某些步骤似乎会搞砸设置。例如,如果它在初始设置后再次运行一次并将cloud-init某些配置设置为 value X,但您随后手动将其覆盖为Y,现在cloud-init重新运行以将其设置回X。或者,让系统重新创建您的 SSH 主机密钥。

\n

因此,我发现手动运行非常有用:

\n
sudo touch /etc/cloud/cloud-init.disabled\n
Run Code Online (Sandbox Code Playgroud)\n

...初始设置后以防止其再次运行cloud-init。(在某些情况下,其中cloud-initreal 仅用于初始“克隆和设置 IP/主机名”类型的配置。)

\n

但有什么办法可以自动化这个过程吗?/etc/cloud/cloud.cfg就像向下次运行后禁用自身的一些参数添加一样?

\n

cloud-init

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

禁用 Root 登录后 SSH 失败

为 RHEL 客户端生成私钥和公钥并将公钥存储在 RHEL 7 服务器的authorized_keys 文件夹中后,我通过转至 PermitRootLogin并将/etc/ssh/sshd_config其设置为 no 来禁用服务器中的 Root 登录。之后我重新启动了 sshd 服务。

现在,当我尝试从客户端到服务器进行 ssh 时,它说

权限被拒绝(publickey、gssapi-keyex、gssapi-with-mic、密码)

为什么我会收到此消息?

linux ssh redhat public-key-encryption rhel7

0
推荐指数
1
解决办法
71
查看次数

如何让 nginx 在代理时不覆盖 x-forwarded-for?

我在负载均衡器后面有一个 nginx 服务器,nginx 服务器将请求传递到各种服务,但在本例中是一个运行 apache 的 docker 容器。负载均衡器正确设置了 X-Forwarded-For,但当它到达 docker 容器时,X-Forwarded-For 已设置为 LB IP。

我在 nginx 配置中有这个:

/etc/nginx/conf.d/real_ip.conf
set_real_ip_from {{LB IP}};
real_ip_header X-Real-IP;
real_ip_recursive on;
Run Code Online (Sandbox Code Playgroud)

这是虚拟主机:

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name *.domain domain;
    include /etc/nginx/snippets/domain_ssl.conf;

  add_header X-Nginx-Debug "hi";

  proxy_pass_request_headers on;

  location    / {
    proxy_pass_request_headers on;
    proxy_pass  http://container-php;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Remote-Addr $remote_addr;
    proxy_set_header X-Real-IP $http_x_real_ip;
    proxy_set_header X-Header-Test "Hello World - $http_x_forwarded_for";
    proxy_set_header X-Forwarded-Proto $scheme; …
Run Code Online (Sandbox Code Playgroud)

nginx reverse-proxy nginx-reverse-proxy

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

如何在 Linux 中使用 shell 命令用随机数据覆盖非常大的硬盘 (18TB)

我想用随机字节覆盖一个非常大的硬盘驱动器(18TB),然后检查智能数据是否有重新分配的扇区或其他错误。

由于 badblocks 对单次运行中使用的块数量有一些限制,我尝试了 archlinux wiki 上描述的“cryptsetup 方法”:

https://wiki.archlinux.org/title/Badblocks#Finding_bad_sectors

我在整个驱动器上设置了一个加密的逻辑设备字段,然后使用命令“shred”将零写入打开的字段设备:

cryptsetup open /dev/device eld --type plain --cipher aes-xts-plain64
shred -v -n 0 -z /dev/mapper/eld
Run Code Online (Sandbox Code Playgroud)

它继续打印诸如

shred: /dev/mapper/eld: pass 1/1 (000000)...870MiB/17TiB 0%
shred: /dev/mapper/eld: pass 1/1 (000000)...1.7GiB/17TiB 0%
...
shred: /dev/mapper/eld: pass 1/1 (000000)...4.1TiB/17TiB 24%
Run Code Online (Sandbox Code Playgroud)

但随后它停止在 4.1TiB/17TiB 写入。我已经用 hexdump 验证了这一点,零没有写入到字节地址 0x428249b0000 (4570459340800 ~ 4.156 TiB) 之外:

hexdump -C  --skip 0x428249a0000 /dev/mapper/eld | head
428249a0000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................| …
Run Code Online (Sandbox Code Playgroud)

hard-drive bad-blocks large-data

8
推荐指数
1
解决办法
2503
查看次数

为什么有些 nginx 配置缺少 http 块?

根据 nginx 初学者指南:

提供静态内容

一项重要的 Web 服务器任务是提供文件(例如图像或静态 HTML 页面)。您将实现一个示例,其中根据请求,将从不同的本地目录提供文件:/data/www(可能包含 HTML 文件)和 /data/images(包含图像)。这将需要编辑配置文件并在 http 块内设置具有两个位置块的服务器块。

但大多数 nginx conf 文件都缺少这http { ... }部分。

我在文档中找不到任何描述它的内容。

这个http { ... }块只是可选的吗?我什么时候应该使用/省略它?

nginx

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

Linux:使来自同一主机的流量看起来来自不同的 IP 地址

我正在使用客户端库 ( https://github.com/Beckhoff/ADS ) 通过 TCP 从 Linux 机器连接到 PLC。但是,该库只能在 PLC 的源 IP 和目标 IP 地址之间执行单个连接。我的目标是连接到具有多个客户端的远程IP/PLC,即远程PLC必须能够根据客户端的(不同)IP地址来区分客户端连接。

我希望通过一些巧妙的iptables规则来实现这一点;或者,也许 Linux 网络命名空间也可以工作。

对于iptables路由(双关语?),我的计划是将多个 IP 地址分配给 Linux 计算机上的同一个 NIC。由于远程服务侦听单个端口(48898),我不能简单地在iptables规则中使用不同的目标端口。因此,我在想这样的事情:

远程 PLC:192.168.1.10/24
Linux PC:192.168.1.20/24 (ip addr add 192.168.1.20/24 dev enp2s0)
Linux PC:192.168.1.21/24 (ip addr add 192.168.1.21/24 dev enp2s0)

  • 客户端 A 只需从 192.168.1.20 连接到 192.168.1.10
  • 客户端 A 只需从 192.168.1.21 连接到(虚拟)192.168.1.11

通过为远程 PLC 使用“虚拟”IP 地址,我希望能够区分 TCP 连接,这样我就知道哪些数据包源自客户端 A,哪些数据包源自客户端 B。现在我需要做一些iptables魔术:

  1. 传出:如果目标 IP 地址 == 192.168.1.11 1.1 -> 重写为目标 IP …

linux iptables linux-networking

4
推荐指数
1
解决办法
1295
查看次数

Docker Compose 端口未暴露?

我有一个简单的基于 Python 的 Web 服务器,在使用 docker compose 设置的容器中运行,该容器公开端口 8080。

\n

当我 docker-compose up 服务时,它报告端口已公开,但端口未向外部公开。

\n

接下来我应该看什么诊断?

\n

这是一个典型的运行

\n
\xe2\x9e\x9c  demo04 sudo docker-compose up -d\nRecreating leagueweb_database ... done\nRecreating leagueweb_server   ... done\n
Run Code Online (Sandbox Code Playgroud)\n

Python Web 服务器(使用 CherryPy)报告它已正常启动并打开端口 8080。

\n
leagueweb_server | [25/Jan/2022:11:27:21] ENGINE Serving on http://127.0.0.1:8080\n
Run Code Online (Sandbox Code Playgroud)\n

Docker 报告它正在转发端口 8080

\n
\xe2\x9e\x9c  demo04 sudo docker-compose ps\n       Name                     Command                  State                              Ports\n------------------------------------------------------------------------------------------------------------------------\nleagueweb_database   /entrypoint.sh mysqld            Up (healthy)   0.0.0.0:3306->3306/tcp,:::3306->3306/tcp, 33060/tcp\nleagueweb_server     ./wait-for-it.sh database: ...   Up             0.0.0.0:8080->8080/tcp,:::8080->8080/tcp\n
Run Code Online (Sandbox Code Playgroud)\n

从远程 PC 进行测试,我可以看到虽然端口 3306 是外部开放的,但端口 8080 却没有。

\n
PS …
Run Code Online (Sandbox Code Playgroud)

python cherrypy docker docker-compose

4
推荐指数
1
解决办法
5430
查看次数