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-21415

Tom's questions

Martin Hope
Tom
Asked: 2015-09-15 08:50:31 +0800 CST

使用 3rd-party API 时如何解决 IP 白名单?

  • 1

我们使用的服务的 API 将拒绝请求,除非源 IP 先前已被列入白名单。他们只给了我们 3 个插槽,这是一个问题,因为我们有超过 3 台机器需要使用 API。

解决此问题的最常用技术是什么?

注意:我不会尝试违反 3rd-party API 的条款和条件。我们正在使用ResellerClub,我联系他们要求更多插槽,但他们回答:

我请求您将您的服务器路由到几组 IP。

因此这个问题。


想法:

  • 我在想我们可以通过运行一种充当中间人的代理来解决这个问题。我们没有向第 3 方发出 API 请求,而是向我们的代理发出请求,该代理将请求反弹给第 3 方,因此所有请求似乎都来自他们眼中的一个 IP。有没有做这种事情的通用软件?这样做似乎比下面的想法更简单,但我错了吗?
  • 我应该研究使用“一个 NAT 实例”吗?例如http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html。它看起来很复杂 - 没有更简单的解决方案吗?(运行具有额外网络复杂性的额外实例是一种耻辱)。
  • 既然我们使用了 Docker,那么Weave是否相关?
  • 我们可以将静态 IP 附加到 VPC 网关吗?我看到使用 AWS Storage Gateway (来源)是可能的——但不确定常规的 vpc igw 吗?

我们的架构:我们使用 AWS 并让我们的实例在 ELB 后面运行的 VPC 中。我们经常在事先不知道 IP 地址的情况下启动新实例。我们在所有机器上运行相同的软件。这些机器运行 CoreOS,我们的应用程序在 Docker 容器中运行。

proxy
  • 2 个回答
  • 1969 Views
Martin Hope
Tom
Asked: 2015-01-10 03:56:59 +0800 CST

在 docker 容器中运行时如何让 php-fpm 登录到 stdout/stderr

  • 31

我在 docker 容器中有 php-fpm,在Dockerfile我编辑 fpm 配置文件 ( /etc/php5/fpm/pool.d/www.conf) 以设置访问日志/var/log/fpm-access.log和错误日志/var/log/fpm-php.www.log:

# Do some php-fpm config
#  Redirect worker stdout and stderr into main error log
#  Activate the fpm access log
#  Enable display errors
#  Enable the error log
RUN sed -i '/^;catch_workers_output/ccatch_workers_output = yes' /etc/php5/fpm/pool.d/www.conf && \
    sed -i '/^;access.log/caccess.log = /var/log/fpm-access.log' /etc/php5/fpm/pool.d/www.conf && \
    sed -i '/^;php_flag\[display_errors\]/cphp_flag[display_errors] = off' /etc/php5/fpm/pool.d/www.conf && \
    sed -i '/^;php_admin_value\[error_log\]/cphp_admin_value[error_log] = /var/log/fpm-php.www.log' /etc/php5/fpm/pool.d/www.conf && \
    sed -i '/^;php_admin_flag\[log_errors\]/cphp_admin_flag[log_errors] = on' /etc/php5/fpm/pool.d/www.conf

这很好用——我可以将一个外壳放入容器中以查看日志。但是......这不是最佳实践。

问题是当我尝试使用docker 日志收集器时- 我需要 php-fpm 记录到 stdout 或 stderr 以便 docker 可以捕获它们并将它们提供给docker logs命令。

我试图在(这是我从官方 nginx docker imageDockerfile复制的一个想法)中做到这一点:

# Redirect fpm logs to stdout and stderr so they are forwarded to the docker log collector
RUN ln -sf /dev/stdout /var/log/fpm-access.log && \
    ln -sf /dev/stderr /var/log/fpm-php.www.log

这不起作用 - 没有看到任何访问日志docker logs- 我试图找出原因?在 docker 中使用 fpm 的其他人是否设法让日志记录工作到 docker 日志收集器?

logging
  • 3 个回答
  • 79455 Views
Martin Hope
Tom
Asked: 2015-01-08 03:38:48 +0800 CST

Nginx:在supervisord下运行nginx时如何使用docker日志收集器

  • 7

官方 nginx docker 镜像 ( Dockerfile ) 使用以下技巧将其日志传递给 stdout 和 stderr,以便它们被 docker 日志收集器捕获并使用以下方法查看docker logs <container-name>:

# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log
RUN ln -sf /dev/stderr /var/log/nginx/error.log

我也想做同样的事情,但是我在容器中将supervisord作为 PID 1,它监督 nginx 进程并捕获 stdout 和 stderr 并将其放入它自己的日志文件中。因此日志不会到达 docker 日志收集器。

这是我的 supervisord.conf 中的相关块

[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"
priority=990
; NOTE: We do not want to redirect stdout and stderr of a nginx process to a logfile because we want docker log collector to get them.
stdout_logfile= NOT SURE WHAT TO PUT HERE?
stderr_logfile= NOT SURE WHAT TO PUT HERE?
username=www-data
autorestart=true

supervisord 文档很棒(http://supervisord.org/configuration.html)但是因为stdout_logfile他们没有给我我需要的答案 - 即,我如何配置 supervisord 不拦截进程 stdout / stderr (或捕获到日志文件,但也转发到正常的标准输出/标准错误)。

我已经尝试过的:

  1. stdout_logfile=NONE- 不获取任何日志,既不标准输出也不到文件
  2. stdout_logfile=/var/log/supervisor/%(program_name)s.log- 获取日志到文件但不是标准输出。
  3. 未定义stdout_logfile - 将日志获取到随机命名的文件,但不是标准输出。
  4. stdout_logfile=/dev/stdout- Supervisord 给出错误:

    CRIT 未捕获的 python 异常,关闭通道 (stdout)> (:[Errno 29] Illegal seek [/usr/lib/python2.7/dist-packages/supervisor/supervisord.py|runforever|233] [/usr/lib/python2 .7/dist-packages/supervisor/dispatchers.py|handle_read_event|231] [/usr/lib/python2.7/dist-packages/supervisor/dispatchers.py|record_output|165] [/usr/lib/python2.7 /dist-packages/supervisor/dispatchers.py|_log|141] [/usr/lib/python2.7/dist-packages/supervisor/loggers.py|info|273] [/usr/lib/python2.7/dist -packages/supervisor/loggers.py|log|291] [/usr/lib/python2.7/dist-packages/supervisor/loggers.py|emit|186] [/usr/lib/python2.7/dist-packages /supervisor/loggers.py|doRollover|195])

nginx
  • 1 个回答
  • 12082 Views
Martin Hope
Tom
Asked: 2014-01-08 02:22:03 +0800 CST

如何设置 MySQL 的内部时区支持?

  • 0

今天,Facebook 上的 MySQL发布了以下关于 MySQL 性能的信息:

今天我们在一个完全出乎意料的地方发现了一个性能问题——如果正在使用 TIMESTAMP 数据类型并且 MySQL 被配置为使用系统时区,它将命中具有全局互斥锁的 Linux C 库中的代码。雪上加霜的是,MySQL 的内部时区支持(使用 mysql.time_zone* 表)在单线程工作负载下要快约 30%。使用 30 个客户端线程,MySQL 的内部时区转换速度提高了 30 倍。这一天从一个看起来像 MySQL 错误的东西开始,但显然这是 MySQL 的胜利。-- 多玛斯

如何确定我的 MySQL 实例是使用较慢的系统时区还是使用较快的mysql.time_zone*表?即我应该检查哪些 MySQL 配置参数?

(我们实际上使用 Amazon RDS 而不是托管我们自己的数据库,但我认为除了检查之外,这并不重要my.cnf,我需要使用 RDS 参数组来检查或更改配置变量。)

mysql
  • 1 个回答
  • 1814 Views
Martin Hope
Tom
Asked: 2013-12-19 10:35:40 +0800 CST

如何在不支付 600 美元上传证书的情况下将 https 与 AWS Cloudfront 结合使用?

  • 15

我可以通过 Amazon CloudFront 托管一个动态网站,因为它们具有CNAME 通配符支持。但是,我网站的某些页面使用 HTTPS。亚马逊有一些关于如何将您的 SSL 证书与 CloudFront 分配相关联的文档,但定价显示它每月花费 600 美元,对我来说太贵了。

我的问题是......是否可以配置 CloudFront,以便从 CloudFront 提供 HTTP 请求,但 CloudFront 忽略 HTTPS 请求并直接传递到源(在我的情况下,可以免费解密 SSL的弹性负载均衡器) ?

ssl
  • 3 个回答
  • 5380 Views
Martin Hope
Tom
Asked: 2013-11-14 04:06:14 +0800 CST

如何防止 nginx 节流与维护模式冲突?

  • 1

我们使用HttpLimitReqModule nginx mondule 进行速率限制,发现它与我们的“维护模式”冲突,因为两个组件都使用http 状态码 503。

当限制被激活时(通过limit_req指令),nginx 通常会提供 503,但不幸的是使用了我们的维护模式位置,这导致我们的 Amazon S3 托管维护页面出现 302。限制请求的 302 不是一个好的结果。

我想知道其他人如何处理这个问题?例如,我是否应该为我们的维护页面使用不同的状态代码,但如果是这样,怎么办?

理想情况下,对于受限制的请求,我不希望提供任何页面,只需要 503 响应标头 - 它需要尽可能轻量级,因为关键是要阻止服务器不堪重负。


作为参考,这是我们用于“维护模式”的 nginx 配置:

server {
    ...

    # Redirect processing of 503 error pages into a named location:
    error_page 503 @maintenance;

    # "Maintenance Mode" is off by default - Use a nginx variable to track state.
    set $maintenance off;

    # Switch on "Maintenance Mode" if a certain file exists.
    if (-f /var/www/mysite/shared/maintenanceON) {
        set $maintenance on;
    }

    if ($maintenance = on) {
        return 503; # 503 - Service unavailable
    }

    location @maintenance {
        # Redirect the request to our maintenance page in Amazon S3.
        rewrite ^(.*)$ http://mysite.s3-website-us-east-1.amazonaws.com/ break;
    }
    ...
    # Process the php files - pass to php-fpm.
    location ~ \.php {
        # Limit aggressive bots and crawlers to 30 requests per minute.
        limit_req zone=bots;

        fastcgi_pass 127.0.0.1:$fastcgi_port;
    }
    ...
nginx
  • 2 个回答
  • 1775 Views
Martin Hope
Tom
Asked: 2013-11-14 03:13:58 +0800 CST

在使用 503 的 nginx 处于维护模式时如何转发到 Amazon S3?

  • 0

在网站维护期间,有时需要关闭我们的网站。

我们当前的方法是touch创建一个文件,该文件将触发 Web 服务器 ( nginx ) 将流量重定向到托管在 Amazon S3 中的维护页面。将维护页面托管在外部服务器上很重要,因为在维护期间无法保证任何本地文件的可用性。

这是我们用于“维护模式”的 nginx 配置:

server {
    ...

    # Redirect processing of 503 error pages into a named location:
    error_page 503 @maintenance;

    # "Maintenance Mode" is off by default - Use a nginx variable to track state.
    set $maintenance off;

    # Swith on "Maintenace Mode" if a certain file exists.
    if (-f /var/www/mysite/shared/maintenanceON) {
        set $maintenance on;
    }
    # Don't use "Maintenance Mode" for our own offices.
    if ($remote_addr ~ (69.69.96.69|69.69.69.79)) {
        set $maintenance off;
    }
    # Don't use "Maintenance Mode" for certain urls, e.g. the load-balancer ping page.
    if ($uri ~ ^/(site\/ping|robots\.txt)$) {
        set $maintenance off;
    }

    if ($maintenance = on) {
        return 503; # 503 - Service unavailable
    }

    location @maintenance {
        # Redirect the request to our maintenance page in Amazon S3.
        rewrite ^(.*)$ http://mysite.s3-website-us-east-1.amazonaws.com/ break;
    }

    ...

它工作得很好。但是有一个不幸的副作用,我想知道是否可以避免?

这rewrite是由 Nginx 使用 302 http 状态代码将请求转发到 Amazon S3 站点完成的。因此,在维护模式期间,我们不会返回 503,而是返回 302。这不是一个好的礼仪,如果 google bot 在计划的站点停机时间期间抓取我们,可能会很糟糕。Google 推荐 503(来源)。

是否有一个 nginx 指令可以用来获得相同的效果,但没有 302 用于重定向?


这表明维护模式返回“302 临时移动”而不是我更喜欢的“503 服务不可用”:

> wget http://staging.example.com
--2013-11-13 10:00:47--  http://staging.example.com/
Resolving staging.example.com (staging.example.com)... 69.69.69.80
Connecting to staging.example.com (staging.example.com)|69.69.69.80|:80... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: http://example.s3-website-us-east-1.amazonaws.com/ [following]
--2013-11-13 10:00:53--  http://example.s3-website-us-east-1.amazonaws.com/
Resolving example.s3-website-us-east-1.amazonaws.com (example.s3-website-us-east-1.amazonaws.com)...
nginx
  • 1 个回答
  • 3014 Views
Martin Hope
Tom
Asked: 2009-10-14 23:27:49 +0800 CST

如何修改 allow_url_fopen 本地值

  • 0

这是关于 LAMP 服务器上的 PHP 配置的问题。

我想关闭allow_url_fopen一个虚拟主机而不是另一个(即不能在 php.ini 中全局关闭它)。前几天我有同样的要求,但register_globals很简单,我只是在虚拟主机的.htaccess文件中添加了以下内容:DOCUMENT_ROOT

php_flag register_globals 0

但同样的方法似乎不起作用allow_url_fopen。如果我添加

php_flag allow_url_fopen 0

对我的.htaccess没有任何反应phpinfo()显示local value On, global value On.

我究竟做错了什么?

PS:我在修改.htaccess文件后重新启动了 Apache。

security
  • 1 个回答
  • 2636 Views
Martin Hope
Tom
Asked: 2009-09-29 08:31:55 +0800 CST

如何计算 sendmail 吞吐量

  • 0

有没有人有一个脚本可以输出过去一小时内发送的邮件数量,即sendmail 外发吞吐量。应该可以通过分析邮件日志(/var/log/maillog)来确定?

也许有一些 FOSS 可以帮助?

使用mailstats ( /usr/sbin/mailstats ) 似乎没有多大用处,因为它只提供邮件服务器首次打开时的统计信息,而不是最后一小时的统计信息。也许我错了?

email
  • 3 个回答
  • 1243 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