标签 nginx 下的文章

作者: reistlin
来源: http://www.reistlin.com/blog/432
更新时间: 2023.01
版权声明: 原创文章.转载请保留作者信息和原文完整.谢绝任何方式的摘要

linux.gif

Lets Encrypt 是一家免费、开放、自动化的证书颁发机构(CA),为公众的利益而运行。它是一项由 Internet Security Research Group (ISRG) 提供的服务。

免费:任何拥有域名的人都可以使用 Lets Encrypt 免费获取受信的证书。

自动化:运行于服务器上的软件可以与 Lets Encrypt 直接交互,以便轻松获取证书,安全地配置它,并自动进行续期。

安全:Lets Encrypt 将成为一个推动 TLS 安全最佳实践发展的平台,无论是作为一个证书颁发机构(CA)还是通过帮助网站运营商正确地保护其服务器。

透明:所有颁发或吊销的证书将被公开记录,供任何人查阅。

开放:自动签发和续订协议已经发布作为其他人可以采用的开放标准。

乐于合作:就像互联网底层协议本身一样,Lets Encrypt 是为了让整个互联网社区受益而做出的共同努力,它不受任何单一组织的控制。Lets Encrypt 是为了让整个互联网社区受益而做出的共同努力,它不受任何单一组织的控制。

通过 acme.sh 实现 ACME (Automatic Certificate Management Environment) 协议,生成免费 SSL 证书并自动 Renew 续期。

自动化证书管理环境(ACME)是用于自动验证 X.509 证书的域验证,安装和管理的标准协议。 ACME 协议由 Internet 安全研究小组设计,并在 IETF RFC 8555。作为具有许多可用的客户端实现的文档齐全的开放标准,ACME 被广泛用作企业证书自动化解决方案。

一,下载安装 acme.sh

curl https://get.acme.sh | sh -s email=test@reistlin.com

默认安装路径:~/.acme.sh/
举例:/home/reistlin/.acme.sh/

二,设置证书颁发机构 Lets Encrypt

acme.sh --set-default-ca --server letsencrypt

三,生成证书

acme.sh --issue -d reistlin.com -d www.reistlin.com --webroot /home/wwwroot/

-d 参数指定默认域名和 www 域名
--webroot 参数指定网站根目录

举例:申请成功,证书保存在 /home/reistlin/.acme.sh/reistlin.com_ecc 目录

2023年 01月 30日 星期一 17:24:39 CST] Your cert is in: /home/reistlin/.acme.sh/reistlin.com_ecc/reistlin.com.cer
[2023年 01月 30日 星期一 17:24:39 CST] Your cert key is in: /home/reistlin/.acme.sh/reistlin.com_ecc/reistlin.com.key
[2023年 01月 30日 星期一 17:24:39 CST] _on_issue_success

四,配置证书

举例:Nginx SSL 配置

server {
    listen       443 ssl http2;
    server_name  reistlin.com  *.reistlin.com;
 
    ssl_certificate            /etc/nginx/conf.d/reistlin.com.cer;
    ssl_certificate_key        /etc/nginx/conf.d/reistlin.com.key;
    ssl_session_cache          shared:SSL:1m;
    ssl_session_timeout        5m;
}

五,自动续期

Lets Encrypt 免费 SSL 证书有效期 90 天,通过 acme.sh 配置系统 crontab 任务自动 Renew 续期:

系统 crontab 任务:

crontab -l
15 0 * * * "/home/reistlin/.acme.sh"/acme.sh --cron --home "/home/reistlin/.acme.sh" > /dev/null

crontab 每天 0 点 15 分自动检测证书有效性,到期自动 Renew 续期:

[2023年 01月 30日 星期一 21:26:51 CST] ===Starting cron===
[2023年 01月 30日 星期一 21:26:51 CST] Renew: "reistlin.com"
[2023年 01月 30日 星期一 21:26:51 CST] Renew to Le_API=https://acme-v02.api.letsencrypt.org/directory
[2023年 01月 30日 星期一 21:26:51 CST] Skip, Next renewal time is: 2023-03-30T09:24:39Z
[2023年 01月 30日 星期一 21:26:51 CST] Add "--force" to force to renew.
[2023年 01月 30日 星期一 21:26:51 CST] Skipped reistlin.com_ecc
[2023年 01月 30日 星期一 21:26:51 CST] ===End cron===

linux

Apache,Nginx 非 root 用户下启动 HTTP 80 端口(端口范围小于1024)

方法一:

所有用户都可以运行(因为是755权限,文件所有者:root,组所有者:root)

chown root:root nginx
chmod 755 nginx
chmod u+s nginx

方法二:

仅 root 用户和 reistlin 用户可以运行(因为是750权限,文件所有者:root,组所有者:reistlin)

chown root:reistlin nginx
chmod 750 nginx
chmod u+s nginx

作者: reistlin
来源: http://www.reistlin.com/blog/322
更新时间: 2011.05
版权声明: 原创文章.转载请保留作者信息和原文完整.谢绝任何方式的摘要

debian.gifnginx.gif

一,环境:

Debian 6.0.1
Nginx 0.8.54 (nginx-0.8.54.tar.gz)
Openssl 0.9.8o (openssl-0.9.8o.tar.gz)
Pcre 8.12 (pcre-8.12.tar.gz)
Zlib 1.2.5 (zlib-1.2.5.tar.gz)

用户信息:

用户:www-data
组:www-data
主目录:/home/www-data

目录结构:

app:应用程序安装目录
pkgs:源代码包目录
pkgs/build:源代码包编译目录

- 阅读剩余部分 -

作者: reistlin
来源: http://www.reistlin.com/blog/305
更新时间: 2011.05
版权声明: 原创文章.转载请保留作者信息和原文完整.谢绝任何方式的摘要

nginx

phpMyAdmin 是一个以 PHP 为基础,以 Web-Base 方式架构在网站主机上的 MySQL 的数据库管理工具,让管理者可用 Web 接口管理 MySQL 数据库。

通过 Nginx auth_basic 验证功能,可以为 phpMyAdmin 目录增加用户名,密码验证机制。防止任意用户访问 phpMyAdmin(0day 我怕怕!)。

nginx_auth.gif

- 阅读剩余部分 -

作者: reistlin
来源: http://www.reistlin.com/blog/304
更新时间: 2011.05
版权声明: 原创文章.转载请保留作者信息和原文完整.谢绝任何方式的摘要

debian.gif

一,需求:

Linode Debian 6.0 VPS (x86) 编译安装 Nginx + PHP (FastCGI)。

二,环境:

Debian 6.0.1 [下载]
Nginx 0.8.54 [下载]
PHP 5.2.17 (FastCGI) [下载]
PHP-FPM 5.2.17 (FastCGI Process Manager) [下载]

三,安装:

1,配置 www-data 用户环境:

1.1 切换到 root 用户

reistlin@reistlin.com:~$ su - root

1.2 编辑 passwd 文件,配置 www-data 用户的主目录为:/home/www-data,shell为:/bin/bash

root@reistlin.com:~# vim /etc/passwd/
 
www-data:x:33:33:www-data:/home/www-data:/bin/bash

1.3 更新 passwd 和 group 配置

root@reistlin.com:~# pwconv
root@reistlin.com:~# grpconv

2,配置 www-data 用户目录结构:

2.1 建立 www-data 用户主目录,app 安装目录,pkgs 源代码包目录,pkgs/build 源代码包编译目录。

root@reistlin.com:~# mkdir -p /home/www-data/app
root@reistlin.com:~# mkdir -p /home/www-data/pkgs
root@reistlin.com:~# mkdir -p /home/www-data/pkgs/build

2.2 配置 www-data 用户主目录所有者为 www-data

root@reistlin.com:~# chown -R www-data:www-data /home/www-data/

2.3 切换到 www-data 用户

root@reistlin.com:~# su - www-data

3,下载软件包,解压缩:

3.1 进入 pkgs 源代码包目录

www-data@reistlin.com:~$ cd /home/www-data/pkgs

3.2 下载 nginx-0.8.54.tar.gz

www-data@reistlin.com:/home/www-data/pkgs$ wget http://www.nginx.org/download/nginx-0.8.54.tar.gz

3.3 下载 php-5.2.17.tar.gz 和 php-5.2.17-fpm-0.5.14.diff.gz

www-data@reistlin.com:/home/www-data/pkgs$ wget http://www.php.net/get/php-5.2.17.tar.gz/from/cn.php.net/mirror
www-data@reistlin.com:/home/www-data/pkgs$ wget http://php-fpm.org/downloads/php-5.2.17-fpm-0.5.14.diff.gz

3.4 解压缩源代码包,解压到 pkgs/build 源代码包编译目录

www-data@reistlin.com:/home/www-data/pkgs$ tar zxvf nginx-0.8.54.tar.gz -C build
www-data@reistlin.com:/home/www-data/pkgs$ tar zxvf php-5.2.17.tar.gz -C build
www-data@reistlin.com:/home/www-data/pkgs$ cp php-5.2.17-fpm-0.5.14.diff.gz build

4,安装 Nginx:

cd /home/www-data/pkgs/nginx-0.8.54

./configure --prefix=/home/www-data/app/nginx-0.8.54 --with-openssl=/home/www-data/pkgs/build/openssl-0.9.8o --with-zlib=/home/www-data/pkgs/build/zlib-1.2.5 --with-pcre=/home/www-data/pkgs/build/pcre-8.12 --user=www-data --group=www-data --with-http_ssl_module --with-http_stub_status_module

未完待续!

五,补充信息:

Nginx 0.8.54 编译参数:
[http://www.reistlin.com/blog/322]

PHP 5.2.17 (FastCGI) 编译参数:
[http://www.reistlin.com/blog/302]

作者: reistlin
来源: http://www.reistlin.com/blog/301
更新时间: 2011.04
版权声明: 原创文章.转载请保留作者信息和原文完整.谢绝任何方式的摘要

nginx

配置 Nginx Http Proxy 代理服务器,与 [Squid] 功能一样,适用于正向代理 Http 网站。

一,Nginx 正向代理配置文件:

server {
    resolver 8.8.8.8;
    resolver_timeout 5s;
 
    listen 0.0.0.0:8080;
 
    access_log  /home/reistlin/logs/proxy.access.log;
    error_log   /home/reistlin/logs/proxy.error.log;
 
    location / {
        proxy_pass $scheme://$host$request_uri;
        proxy_set_header Host $http_host;
 
        proxy_buffers 256 4k;
        proxy_max_temp_file_size 0;
 
        proxy_connect_timeout 30;
 
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 301 1h;
        proxy_cache_valid any 1m;
    }
}

二,Nginx 正向代理配置说明:

1,配置 DNS 解析 IP 地址,比如 Google Public DNS,以及超时时间(5秒)。

resolver 8.8.8.8;
resolver_timeout 5s;

2,配置正向代理参数,均是由 Nginx 变量组成。其中 proxy_set_header 部分的配置,是为了解决如果 URL 中带 "."(点)后 Nginx 503 错误。

proxy_pass $scheme://$host$request_uri;
proxy_set_header Host $http_host;

3,配置缓存大小,关闭磁盘缓存读写减少I/O,以及代理连接超时时间。

proxy_buffers 256 4k;
proxy_max_temp_file_size 0;
proxy_connect_timeout 30;

4,配置代理服务器 Http 状态缓存时间。

proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;

三,不支持代理 Https 网站

因为 Nginx 不支持 CONNECT,所以无法正向代理 Https 网站(网上银行,Gmail)。
如果访问 Https 网站,比如:https://www.google.com,Nginx access.log 日志如下:

"CONNECT www.google.com:443 HTTP/1.1" 400

nginx

问题:

nginx error – 413 Request Entity Too Large

解决:

1,在 nginx.conf 配置文件中:client_max_body_size 8M;

vim /etc/nginx/sites-available/reistlin.com
 
server {
 
client_max_body_size 8M;
 
}

2,重新启动 nginx 服务

/etc/init.d/nginx reload

作者: reistlin
来源: http://www.reistlin.com/blog/176
更新时间: 2011.03
版权声明: 原创文章.转载请保留作者信息和原文完整.谢绝任何方式的摘要

nginx

配置1:4 CPU (4 Core) + 4 worker_processes (每个worker_processes 使用1个CPU)

[reistlin@reistlin.com ~]$ cat /proc/cpuinfo | grep processor
processor       : 0
processor       : 1
processor       : 2
processor       : 3

worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;

配置2:8 CPU (8 Core) + 8 worker_processes (每个worker_processes 使用1个CPU)

[reistlin@reistlin.com ~]$ cat /proc/cpuinfo | grep processor
processor       : 0
processor       : 1
processor       : 2
processor       : 3
processor       : 4
processor       : 5
processor       : 6
processor       : 7

worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

配置3:16 CPU (16 Core) + 16 worker_processes (每个worker_processes 使用1个CPU)

[reistlin@reistlin.com ~]$ cat /proc/cpuinfo | grep processor
processor       : 0
processor       : 1
processor       : 2
processor       : 3
processor       : 4
processor       : 5
processor       : 6
processor       : 7
processor       : 8
processor       : 9
processor       : 10
processor       : 11
processor       : 12
processor       : 13
processor       : 14
processor       : 15

worker_processes 16;
worker_cpu_affinity 0000000000000001 0000000000000010 0000000000000100 0000000000001000 0000000000010000 0000000000100000 0000000001000000 0000000010000000 0000000100000000 0000001000000000 0000010000000000 0000100000000000 0001000000000000 0010000000000000 0100000000000000 1000000000000000;