Nginx的安装配置使用

Nginx的安装配置使用

安装

Nginx 在默认的 Ubuntu 源仓库中可用。想要安装它,运行下面的命令

sudo apt update

sudo apt install nginx

一旦安装完成,Nginx 将会自动被启动。你可以运行下面的命令来验证它:

sudo systemctl status nginx.service

想要测试你的新 Nginx 安装,在你的浏览器中打开http://YOUR_IP,你应该可以看到默认的 Nginx 加载页面

Nginx 配置文件结构以及最佳实践

  • 所有的 Nginx 配置文件都在/etc/nginx/目录下。
  • 主要的 Nginx 配置文件是/etc/nginx/nginx.conf。
  • 为每个域名创建一个独立的配置文件,便于维护服务器。你可以按照需要定义任意多的 block 文件。
  • Nginx 服务器配置文件被储存在/etc/nginx/sites-available目录下。在/etc/nginx/sites-enabled目录下的配置文件都将被 Nginx 使用。
  • 最佳推荐是使用标准的命名方式。例如,如果你的域名是mydomain.com,那么配置文件应该被命名为/etc/nginx/sites-available/mydomain.com.conf,
    然后在/etc/nginx/sites-enabled下建立软链接 ln -s /etc/nginx/sites-available/mydomain.com.conf 以便被 Nginx 使用

操作配置文件

  • /etc/nginx/sites-available/default是虚拟站点的配置模板,在/etc/nginx/sites-available目录下存放站点配置文件。
  • 必须先在/etc/nginx/sites-available目录下生成站点配置文件,然后在/etc/nginx/sites-enabled目录下建立软连接
cd /etc/nginx/sites-available

sudo cp /etc/nginx/sites-available/default mydomain.com.conf

vim mydomain.com.conf # 参考Nginx文件如何配置

cd /etc/nginx/sites-enabled

sudo ln -s /etc/nginx/sites-available/mydomain.com.conf

# nginx -t -c /etc/nginx/sites-available/mydomain.com.conf # nginx 检查配置文件语法错误
nginx -t # 使用 nginx -t -c 命令时,是使用指定的配置文件作为整个配置。由于 mydomain.com.conf 很可能不包含完整的配置块,因此这会可能导致错误。只使用 nginx -t 命令来测试整个配置。

nginx -s reload # nginx 重新加载配置文件

sudo systemctl status nginx.service # 查看 nginx 状态 | 使用 sudo systemctl start nginx 启动 nginx 服务
server {

        listen 80;
        listen [::]:80;

        server_name mydomain.com;
        root /home/your/web;
        index index.html;

        location / {

                proxy_pass http://localhost:8080; # 将请求代理到本地的8080端口
                proxy_set_header Host $host; # 保留原始的Host头部
                proxy_set_header X-Real-IP $remote_addr; # 传递客户端的真实IP地址
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 传递代理链中的IP地址
                proxy_set_header X-Forwarded-Proto $scheme; # 传递请求使用的协议(http或https)

                try_files $uri $uri/ =404;

        }

        location /assets/ {

                alias /home/your/web/assets/;
                try_files $uri $uri/ =404;
        }

}

# 静态 SPA 网站
server {

        listen 80;
        listen [::]:80;

        server_name aaa.com;

        rewrite ^(.*)$ https://$host$1; # 强制将http的URL重写成https

}


server {

        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        server_name aaa.com;

        ssl_certificate         cert/aaa.com.pem;  # 证书文件路径 /etc/nginx/cert/.....
        ssl_certificate_key     cert/aaa.com.key;  # 私钥文件路径

        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 5m;

        location / {

                root /home/xxxx/website/website-app/dist/website-app/browser;
                index index.html;
                try_files $uri $uri/ /index.html;  # 尝试直接访问文件或目录,如果不存在则重定向到index.html


       }

}


Nginx 端口转发

将域名转发到本地端口

首先介绍最常用的,将域名转发到本地另一个端口上

server{
  listen 80;
  server_name  mydomain.com;
  index  index.php index.html index.htm;

  location / {
    proxy_pass  http://127.0.0.1:8080; # 转发规则
    proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以收到真实的请求
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

这样访问 mydomain.com 时就会转发到本地的 8080 端口

将域名转发到另一个域名

server{
  listen 80;
  server_name  mydomain.com;
  index  index.php index.html index.htm;

  location / {
    proxy_pass  http://www.baidu.com;
    proxy_set_header Host $proxy_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

这样访问 mydomain.com 时就会转发到 www.baidu.com

本地一个端口转发到另一个端口或另一个域名

server{
  listen 80;
  server_name 127.0.0.1; # 公网ip
  index  index.php index.html index.htm;

  location / {
    proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    proxy_set_header Host $proxy_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

这样访问 127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com

加 / 与不加 /

posted @ 2024-04-12 00:06  等你下课啊  阅读(1561)  评论(0)    收藏  举报