首先需要了解nginx的常用命令:
#检查版本和已经启用的模块
nginx -V
#检查配置文件语法
nginx -t
#重载服务器
nginx -s reload
nginx没有用于配置sites-available
和sites-enabled
软连接的脚本,需要自行配置。
ln -s /etc/nginx/sites-available/* /etc/nginx/sites-enabled/*
配置样本来自Calibre-Web设置反向代理↗和SSL 证书 Nginx 服务器 SSL 证书安装部署↗:
首先是SSL部署样例:
server {
#SSL 默认访问端口号为 443
listen 443 ssl;
#请填写绑定证书的域名
server_name cloud.tencent.com;
#请填写证书文件的相对路径或绝对路径
ssl_certificate cloud.tencent.com_bundle.crt;
#请填写私钥文件的相对路径或绝对路径
ssl_certificate_key cloud.tencent.com.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
#例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
root html;
index index.html index.htm;
}
}
其次是反向代理样例:
server {
listen 80;
server_name subdomain.example.com;
client_max_body_size 20M;
location / { # Reduced to "/"
proxy_bind $server_addr;
proxy_pass http://127.0.0.1:8083;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
}
}
最后是实际使用的配置:
server {
listen 443 ssl;
server_name subdomain.example.com;
ssl_certificate /path/to/crt;
ssl_certificate_key /path/to/key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
client_max_body_size 20M;
location / { # Reduced to "/"
proxy_bind $server_addr;
proxy_pass http://127.0.0.1:8083;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
}
}
相比之下nginx的配置更为简单,交给用户处理的部分更多,在Apache2中,诸如proxy_set_header
部分是交给ProxyPassReverse
处理,其中proxy_set_header Host
由ProxyPreserveHost on
处理。
配置完成后按照开头命令依次测试启用重载。
最后附上Calibre-web-Wiki给出的Apache2配置:
Listen 443
<VirtualHost *:443>
SSLEngine on
SSLProxyEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "C:\Apache24\conf\ssl\test.crt"
SSLCertificateKeyFile "C:\Apache24\conf\ssl\test.key"
<Location /calibre-web >
RequestHeader set X-SCRIPT-NAME /calibre-web
RequestHeader set X-SCHEME https
ProxyPass http://localhost:8083/
ProxyPassReverse http://localhost:8083/
ProxyPassReverseCookiePath / /calibre-web/
</Location>
</VirtualHost>
注意,需要启用headers
、proxy
、proxy_http
、rewrite
模块,对于Apache2有:
sudo a2enmod headers proxy proxy_http rewrite