标签 nginx 下的文章

今天在使用 journalctl 查看 nginx 日志时看到在每次启动服务后会出现一条错误信息:

$ journalctl -u nginx
...
nginx.service: Failed to parse PID from file /opt/nginx/logs/nginx.pid: Invalid argument
...

查找了下原因,可能是 nginx 在启动时创建 nginx.pid 文件前 systemd 就在请求这个文件,所以出错了。

解决办法就是题前手动创建 systemd 需要的文件:

mkdir /etc/systemd/system/nginx.service.d
printf "[Service]\nExecStartPost=/bin/sleep 0.1\n" > /etc/systemd/system/nginx.service.d/override.conf
systemctl daemon-reload

以上处理就可以解决问题。

参考链接:
https://bugs.launchpad.net/ubuntu/+source/nginx/+bug/1581864


有时候我们想要限制某个页面的访问权限,需要用户名密码才能进入。

如果使用 nginx 作为反向代理服务器,可以使用 auth_basic 来实现页面加密。

环境需求:

Linux env
nginx
apache2-utils (Debian, Ubuntu) or httpd-tools (RHEL/CentOS/Oracle Linux)

安装环境:

nginx 安装参考:https://niekun.net/index.php/archives/30.html

安装 apache2-utils:

apt-get install apache2-utils

创建账户密码:

使用了 htpasswd 命令创建用户。

关于 htpasswd 的详细使用:https://httpd.apache.org/docs/2.4/programs/htpasswd.html

建议将账户信息文件建立在 nginx 目录,我放在 /etc/nginx/users 目录下:

htpasswd -c /etc/nginx/users/.adminpasswd user1

.adminpasswd 为隐藏的存储所有账户信息的文件,user1 为用户名,回车后会提示输入密码,然后确认密码。

建立其他账户:

htpasswd /etc/nginx/users/.adminpasswd user2

不需要 -c 参数,因为文件已经建立了。

验证账户密码 -v

htpasswd -v /etc/nginx/users/.adminpasswd user1

删除账户 -D

htpasswd -D /etc/nginx/users/.adminpasswd user1

使用账户:

打开 nginx 配置文件,在需要账户登录的路径段修改如下:

location /path {
    ...
    auth_basic           "Administrator's Area";
    auth_basic_user_file /etc/nginx/users/.adminpasswd;
    ...
    ...
}

重新加载配置文件:

service nginx configtest
service nginx reload

打开对应页面测试是否提示输入账号密码。



nginx rewrite 模块主要应用于修改客户端发起的 url 请求,主要使用场景有两个:
1.客户端请求的域名已经已经有了新的地址,需要自动将连接进行转换
2.需要根据请求的 url 动态处理到不同的页面,此处主要使用 try_files 指令

阅读全文


本文主要参考的网站:
https://cipherli.st
https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html

This tutorial shows you how to set up strong SSL security on the nginx webserver. We do this by updating OpenSSL to the latest version to mitigate attacks like Heartbleed, disabling SSL Compression and EXPORT ciphers to mitigate attacks like FREAK, CRIME and LogJAM, disabling SSLv3 and below because of vulnerabilities in the protocol and we will set up a strong ciphersuite that enables Forward Secrecy when possible. We also enable HSTS and HPKP. This way we have a strong and future proof ssl configuration and we get an A+ on the Qually Labs SSL Test.

阅读全文