当我手动运行该服务时,它会在启动时记录一些内容。
但当它作为 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)
但这也没有帮助 - 文件是在守护进程和服务重新启动后创建的,但它们是空的。
我缺少什么?
感谢您的任何建议,我没有想法。
我想获取一个网址,添加前缀并从网址中删除井号。例如,从 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)
我需要做些什么来处理重定向中的哈希标记吗?
据我所知,cloud-init每次配置更改时都会运行。不仅是系统第一次启动,而且每次提供的配置发生更改时。这在某种程度上是有道理的,因为我想很难定义“第一次”(克隆的虚拟机在被冻结并用作模板之前已经运行过,所以它从来都不是真正的第一次)。然而,我时不时地\xe2\x80\x94,很少,但仍然\xe2\x80\x94发现cloud-init当它们重新启动时,它会在已配置的系统上重新运行。
cloud-init然而,当在完全配置的系统上运行时,某些步骤似乎会搞砸设置。例如,如果它在初始设置后再次运行一次并将cloud-init某些配置设置为 value X,但您随后手动将其覆盖为Y,现在cloud-init重新运行以将其设置回X。或者,让系统重新创建您的 SSH 主机密钥。
因此,我发现手动运行非常有用:
\nsudo touch /etc/cloud/cloud-init.disabled\nRun Code Online (Sandbox Code Playgroud)\n...初始设置后以防止其再次运行cloud-init。(在某些情况下,其中cloud-initreal 仅用于初始“克隆和设置 IP/主机名”类型的配置。)
但有什么办法可以自动化这个过程吗?/etc/cloud/cloud.cfg就像向下次运行后禁用自身的一些参数添加一样?
为 RHEL 客户端生成私钥和公钥并将公钥存储在 RHEL 7 服务器的authorized_keys 文件夹中后,我通过转至 PermitRootLogin并将/etc/ssh/sshd_config其设置为 no 来禁用服务器中的 Root 登录。之后我重新启动了 sshd 服务。
现在,当我尝试从客户端到服务器进行 ssh 时,它说
权限被拒绝(publickey、gssapi-keyex、gssapi-with-mic、密码)
为什么我会收到此消息?
我在负载均衡器后面有一个 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) 我想用随机字节覆盖一个非常大的硬盘驱动器(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) 根据 nginx 初学者指南:
提供静态内容
一项重要的 Web 服务器任务是提供文件(例如图像或静态 HTML 页面)。您将实现一个示例,其中根据请求,将从不同的本地目录提供文件:/data/www(可能包含 HTML 文件)和 /data/images(包含图像)。这将需要编辑配置文件并在 http 块内设置具有两个位置块的服务器块。
但大多数 nginx conf 文件都缺少这http { ... }部分。
我在文档中找不到任何描述它的内容。
这个http { ... }块只是可选的吗?我什么时候应该使用/省略它?
我正在使用客户端库 ( 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)
通过为远程 PLC 使用“虚拟”IP 地址,我希望能够区分 TCP 连接,这样我就知道哪些数据包源自客户端 A,哪些数据包源自客户端 B。现在我需要做一些iptables魔术:
传出:如果目标 IP 地址 == 192.168.1.11 1.1 -> 重写为目标 IP …
我有一个简单的基于 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\nRun Code Online (Sandbox Code Playgroud)\nPython Web 服务器(使用 CherryPy)报告它已正常启动并打开端口 8080。
\nleagueweb_server | [25/Jan/2022:11:27:21] ENGINE Serving on http://127.0.0.1:8080\nRun Code Online (Sandbox Code Playgroud)\nDocker 报告它正在转发端口 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\nRun Code Online (Sandbox Code Playgroud)\n从远程 PC 进行测试,我可以看到虽然端口 3306 是外部开放的,但端口 8080 却没有。
\nPS …Run Code Online (Sandbox Code Playgroud) nginx ×3
linux ×2
azure ×1
bad-blocks ×1
cherrypy ×1
cloud-init ×1
docker ×1
hard-drive ×1
iptables ×1
large-data ×1
logging ×1
public ×1
python ×1
redhat ×1
redirect ×1
rhel7 ×1
ssh ×1
stdout ×1
systemd ×1