04 Nginx配置SSL及多个网站
- Linux learning
- 2023-10-31
- 31热度
- 0评论
nginx确实具备很大的灵活性,只需要专注于其配置文件即可完成所有的网站设置。
一、配置SSL网站
如何申请SSL不再赘述。SSL申请成功后,下载pem、key文件,并使用Winscp上传到服务器任意目录,例如:/root/ssl/WEBSITE。
可以使用Winscp编辑配置文件(位于/etc/nginx/sites-enabled),非常方便:
server {
listen 443 ssl;
server_name WEBSITE;
ssl_certificate /root/ssl/WEBSITE/site.pem;
ssl_certificate_key /root/ssl/WEBSITE/site.key;
root /var/www/WEBSITE;
index index.php;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
location / {
try_files $uri $uri/ =404;
}
}
以上配置包含了php8.1支持,此例中,网站的主目录位于:/var/www/WEBSITE。
二、http跳转https
为了实现http向https的转换,有两种方式,一种是用rewite:
server {
listen 80;
server_name WEBSITE;
rewrite ^(.*)$ https://$host$1 permanent;
}
另一种是用return:
server {
listen 80;
server_name WEBSITE;
return 301 https://$host$request_uri;
}
直接把server块加在后面即可,确实非常清晰简单。
三、添加多个网站
nginx天生设计为支持多个网站,甚至连80端口都可以支持多个网站,分别对应不同的域名和主目录,只需要不断添加server块即可。
四、配置反向代理
在location字段中进行设置。如要将整个域名都反向代理:
server {
listen 443 ssl;
server_name WEBSITE;
ssl_certificate /root/ssl/WEBSITE/file.pem;
ssl_certificate_key /root/ssl/WEBSITE/file.key;
location / {
proxy_pass ANOTHER_WEBSITE_URL;
}
}
location /后面还可以跟目录,以实现不同路径反向代理到不同的地址。例如:
location /app {
proxy_pass APP_WEBSITE_URL;
}
需要注意的是,全站反向代理时,不需要与try_files $uri $uri/ =404;写在一起,否则会优先执行try_files,导致出现不期望的结果。
五、应用nginx配置
nginx -s reload
nginx -s stop
nginx
即可重新加载配置文件并重启nginx。