2024年3月15日,因为不想忘记前面关于Nginx反向代理Photoprism的内容。这里记录下,如果能帮助到点击到这篇博客的人就更好了。
主要分为三个部分,第一个部分是部署Photoprism,第二个部分是Nginx反向代理,第三个部分是https设置
前置条件(没有的话,就不要往下看了,或者先稍微了解下再往下看)
- 了解linux系统命令,知道是什么意思
- 了解vim或者其他编辑器(如果你没有图形界面的话)
- 了解ip,端口等计算机网络相关内容
- 一个解析好的域名(反向代理需要用)
部署Photoprism
这一块官方有很详细的教程,这里我就简单把命令贴一下。
sudo apt install docker // 安装docker
wget https://dl.photoprism.app/docker/docker-compose.yml // 下载photoprism镜像配置文件
docker compose up -d // 启动服务
输入上面命令其实就结束了,如果你有图形界面的话,可以 浏览器输入http://localhost:2342/
应该就能看到界面了。如果你只想在局域网或者自己电脑上用那到这里就可以结束了
Nginx反向代理
Nginx如果你想研究的话不建议百度之类的瞎看,去官网说明之类的地方看一看
Nginx服务启动
sudo apt-get install -y nginx // 安装Nginx
sudo systemctl enable --now nginx // 开机自启动Nginx
反向代理(http)
反向代理需要一个解析好了的域名,解析域名这块腾讯云服务器有很多教程,解析完后再往下走。
新建一个Nginx配置文件,配置文件的名称自己喜欢就行, 这里是“photoprism.conf",但是后缀要一样
vim /etc/nginx/conf.d/photoprism.conf
把以下内容复制进去
server {
listen 80;
server_name <你的域名>; # abc.com之类的
client_max_body_size 0;
location / {
proxy_pass http://127.0.0.1:2342; # 你代理的页面,Photoprism默认的就是这个。不需要改动
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
然后重新启动两个服务
sudo systemctl restart nginx
docker-compose up -d
现在你就可以在任何电脑输入你的域名,访问你的照片库,当然目前还是个http裸奔,不介意的话其实也没事。黑客什么的应该也看不上我存的内容
反向代理(https)
这个是重头戏了!
这个是重头戏了!
这个是重头戏了!
先把需要的东西准备好,ssl证书。如果你也是用的腾讯云的话,可以按照下面的步骤操作
- 在控制台的搜索栏直接搜索"ssl证书"
- 我的证书->申请免费证书
- 成功之后,下载Nginx版本就行
把这个证书解压后文件全部传到服务器上,推荐Winscp工具,怎么使用靠你自己去调查了。
接下来就是Nginx配置文件设置
sudo vim /etc/nginx/conf.d/photoprism.conf
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name <你的域名>;
client_max_body_size 500M;
# With SSL via Let's Encrypt
# 对应的ssl证书, 压缩包解压出来有四个文件,包含下面两个后缀的就行
# 记得路径改成你的证书所在路径,一般会放到/etc/nginx下面。其他路径我没进行尝试,应该也没问题的
ssl_certificate /etc/nginx/xxxxxx.crt;
ssl_certificate_key /etc/nginx/xxxxxx.key;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:2342;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
client_max_body_size 500M;
}
}
如果你重启Nginx的时候遇到了下面的问题
```bash
Job for nginx.service failed because the control process exited with error code.
那就用下面的命令查看日志
sudo systemctl status nginx
如果日志显示下面语句
Mar 15 13:41:08 VM-4-6-ubuntu systemd[1]: Starting A high performance web server and a reverse proxy server...
Mar 15 13:41:08 VM-4-6-ubuntu nginx[584795]: nginx: [emerg] no "ssl_certificate" is defined for the "listen ... ssl" directive in /etc/nginx/sites-enabled/default:21
Mar 15 13:41:08 VM-4-6-ubuntu nginx[584795]: nginx: configuration file /etc/nginx/nginx.conf test failed
进入错误提到的地方,也就是这个/etc/nginx/sites-enabled/default
。
sudo vim /etc/nginx/sites-enabled/default
变更成下面的样子,就是改成443端口,并且添加ssl认证
server {
#listen 80 default_server;
#listen [::]:80 default_server;
# SSL configuration
#
# 最开始默认的是80端口,为了ssl,我们打开443端口。把80的注释掉了了
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
# 这里就是前面提到的ss证书的第二个位置
ssl_certificate /etc/nginx/liulustore.com_bundle.crt;
ssl_certificate_key /etc/nginx/liulustore.com.key;
# 这之后的内容都不需要变更
完成之后记得重启两个服务
sudo systemctl restart nginx
docker-compose up -d
到这里就全部结束了
标签:Nginx,nginx,Photoprism,etc,server,ssl,proxy,https From: https://www.cnblogs.com/zhaobangliu/p/18075243