我的个人网站以前都是自己写一个node文件,直接起个服务当服务器了。后来感觉还是得正式点,慢慢得都转到Nginx上。于是开始了Nginx摸索之旅
安装方式有多种,每种方式的繁琐程度不同
其中,使用系统包管理器安装如沐春风,使用源码编译安装味同嚼蜡。所以我只说用系统包管理器安装
// 安装
yum install epel-release
yum install nginx
// 启动
sudo systemctl start nginx
/etc/nginx
目录下。具体的文件名可能是nginx.conf
/var/log/nginx/error.log
直接用sftp上传文件到linux的html文件下 ,会报权限拒绝
可以先给html赋777权限,然后重启Linux
// 赋777权限
sudo chmod -R 777 /usr/share/nginx/html
// 重启
sudo service nginx reload
sudo service nginx restart
如果你想将静态网页放在nginx的html的dist文件夹下,并希望在URL的某个端口号后不需要写dist
就可以打开页面,你可以尝试使用rewrite规则来实现。如果你希望在不同的端口号上对应不同的文件夹,可以在nginx的配置文件中添加多个server块,每个块指定不同的端口号和对应的文件夹路径。以下是一个示例配置:
server {
listen 8080;
root /path/to/nginx/html/dist1;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
server {
listen 8081;
root /path/to/nginx/html/dist2;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
要在Nginx中配置静态网页的POST请求代理,你可以使用proxy_pass
指令来将POST请求反向代理到另一个服务器或应用程序。其实就是在上面配置的server模块中,再加一个location。
以下是一个示例配置:
server {
listen 80;
server_name example.com;
location / {
root /path/to/your/static/files;
try_files $uri $uri/ =404;
}
location /api {
rewrite ^/api(.*)$ $1 break;
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
上面示例中,在location /api
块中添加了一个rewrite
指令。这个指令会把请求URL中的/api
前缀去掉,并把剩余部分作为反向代理的路径。
这样,如果你的静态网站中的POST请求以/api
开头,Nginx将会代理这些请求至后端服务器,并将响应返回给客户端。URL中的/api
前缀将被移除,后端服务器收到的请求将是不带前缀的形式。
代理转发后的效果如下:
// 浏览器看到的请求
http://39.104.22.73/api/getarticlenum/foreend
// 代理后实际的请求;
http://39.104.22.73:8888/getarticlenum/foreend
我们需求确保nginx配置文件中的用户和组,与Nginx实际运行中的用户和组一致,要不然会出现文件权限不可读的问题。
在配置文件中搜索 user
指令,它定义了Nginx的运行用户和组。例如,你可能会找到如下配置:
user www-data;
这里的 www-data
就是Nginx的运行用户和组。
使用以下命令来查看Nginx的运行用户和组:
ps -ef | grep nginx
输出中的结果将显示Nginx的运行进程。通常情况下,第一个列出的用户是Nginx的运行用户,第一个列出的组是Nginx的运行组。
比较配置文件中的用户和组与实际运行的用户和组。确保它们匹配。如果不匹配,你可以通过修改配置文件中的 user
指令来更正用户和组的设置,确保它与实际运行的用户和组一致。
例如,当你运行 ps -ef | grep nginx
命令时,可能会得到类似以下的输出:
root 1234 1 0 11:30 ? 00:00:00 nginx: master process /usr/sbin/nginx
www-data 1235 1234 0 11:30 ? 00:00:00 nginx: worker process
在这个例子中,第一列是用户标识符(UID),第二列是进程ID(PID),第三列是父进程ID(PPID),第四列是CPU使用率(C),第五列是启动时间(STIME),第六列是控制台终端(TTY),第七列是运行时间(TIME),最后一列是命令行(CMD)。
可以看到,第一行是Nginx的主进程,由root用户启动,它的PID为1234,PPID为1。第二行是Nginx的工作进程,由www-data用户启动,它的PID为1235,PPID为1234。
网站目录部署到nginx后,需要给该网站目录设置分配用户和用户组,并且给该用户赋予读写权限。
您可以使用以下命令修改.nuxt
文件夹的权限,确保Nginx的运行用户具有读取权限:
sudo chown -R www-data:www-data .nuxt
sudo chmod -R 755 .nuxt
以上命令将.nuxt
文件夹的所有者和组设置为www-data
,并赋予读/执行权限给所有者和组。