Nginx安装与基础部署

我的个人网站以前都是自己写一个node文件,直接起个服务当服务器了。后来感觉还是得正式点,慢慢得都转到Nginx上。于是开始了Nginx摸索之旅

一:安装

安装方式有多种,每种方式的繁琐程度不同

  • 使用系统包管理器安装
  • 使用源码编译安装

其中,使用系统包管理器安装如沐春风,使用源码编译安装味同嚼蜡。所以我只说用系统包管理器安装

1、使用系统包管理器安装(CentOS系统)

// 安装
yum install epel-release
yum install nginx

// 启动
sudo systemctl start nginx

2、一些默认路径

  • Nginx的网站文件存放在/etc/nginx/sites-available目录下,
  • 默认的静态网页文件夹是/usr/share/nginx/html目录
  • 配置文件通常位于/etc/nginx目录下。具体的文件名可能是nginx.conf
  • 查看Nginx的错误日志,通常位于 /var/log/nginx/error.log

3、设置html文件夹权限

直接用sftp上传文件到linux的html文件下 ,会报权限拒绝

可以先给html赋777权限,然后重启Linux

// 赋777权限
sudo chmod -R 777 /usr/share/nginx/html

// 重启
sudo service nginx reload
sudo service nginx restart

二:静态网页配置

1、隐藏某级路径

如果你想将静态网页放在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;
  }
}
2、设置post请求代理

要在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

三:基础概念

1、用户和用户组

我们需求确保nginx配置文件中的用户和组,与Nginx实际运行中的用户和组一致,要不然会出现文件权限不可读的问题。

2、如何鉴别实际运行中的用户和组是否跟运行中的一致?

在配置文件中搜索 user 指令,它定义了Nginx的运行用户和组。例如,你可能会找到如下配置:

user www-data;

这里的 www-data 就是Nginx的运行用户和组。

使用以下命令来查看Nginx的运行用户和组:

ps -ef | grep nginx

输出中的结果将显示Nginx的运行进程。通常情况下,第一个列出的用户是Nginx的运行用户,第一个列出的组是Nginx的运行组。

比较配置文件中的用户和组与实际运行的用户和组。确保它们匹配。如果不匹配,你可以通过修改配置文件中的 user 指令来更正用户和组的设置,确保它与实际运行的用户和组一致。

3、ps -ef | grep nginx打印的内容如何解读?

例如,当你运行 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。

4、文件夹分配用户

网站目录部署到nginx后,需要给该网站目录设置分配用户和用户组,并且给该用户赋予读写权限。

您可以使用以下命令修改.nuxt文件夹的权限,确保Nginx的运行用户具有读取权限:

sudo chown -R www-data:www-data .nuxt
sudo chmod -R 755 .nuxt

以上命令将.nuxt文件夹的所有者和组设置为www-data,并赋予读/执行权限给所有者和组。

你可能感兴趣的:(nginx,linux,运维)