nginx的配置教程

nginx的安装请参考相关教程,下面直接对配置进行说明。

1、进入srv目录,创建nginx目录,具体目录可自行安排

mkdir -pv  ./nginx

2、进入新建的nginx目录,新建domain_com.conf文件(文件编码选择UTF-8格式),名称建议根据域名来定义,内容模板如下

# net core的nginx配置

# http到https的301跳转
#server {
   #配置 http到https的301跳转
   # listen 80;
   # server_name 10.41.3.114;
   # return 301 https://$host$request_uri;
#}

server {
        # http请求监听 80 端口
        listen 80;
        server_name www.domain.com;  #改为实际的请求地址
        charset utf-8;
        client_max_body_size 100M;  # 限制客户端请求体大小为100MB
        # 定义服务器位置
        location / {
            proxy_pass http://localhost:5000;    #改为系统的本机启动地址
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection keep-alive;
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port; #端口
            proxy_set_header Cache-Control '';  # 确保不修改或清除 Cache-Control 头

            #add_header X-App-Id "0"; //自定义请求头
            #proxy_set_header X-Forwarded-Prefix en; #自定义虚拟目录
        }


      location /upload/ {
        alias /yourAppPath/upload/  # 特定静态目录的路径
     }

     location /templates/ {
        alias /yourAppPath/templates/ # 特定静态目录的路径
     }  
}

server {
   # https请求监听 443 端口
    listen 443 ssl;
    server_name www.domain.com  #改为实际的请求地址
    ssl_certificate /path/to/your/cert.pem;    #证书文件路径
    ssl_certificate_key /path/to/your/cert.key;   #证书key路径
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    client_max_body_size 100M;  # 限制客户端请求体大小为100MB
    
    
    #配置静态资源防盗链,不需要可以删除
    location ~* \.(jpg|jpeg|png|gif|bmp|webp|ico|css|js)$ {
        # 缓存配置(可选,加速访问)
        expires 7d;

        # 防盗链核心规则
        valid_referers  *.youDomain.cn;  # 信任的域名

        # 不允许的外链请求:返回403禁止访问
        if ($invalid_referer) {
            return 403;
         }
        }
    
    location / {
        proxy_pass http://localhost:5000;   #改为系统的本机启动地址
        proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection keep-alive;
         proxy_set_header Host $host;
         proxy_cache_bypass $http_upgrade;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header X-Forwarded-Proto $scheme;
         proxy_set_header X-Forwarded-Port $server_port; #端口
         proxy_set_header Cache-Control '';  # 确保不修改或清除 Cache-Control 头

          #add_header X-App-Id "0"; //自定义请求头
          #proxy_set_header X-Forwarded-Prefix en; #自定义虚拟目录
    }

      location /upload/ {
        alias /yourAppPath/upload/  # 特定静态目录的路径
     }

     location /templates/ {
        alias /yourAppPath/templates/ # 特定静态目录的路径
     }  

}

不需要的可自行删除或用#号注释


3、打开nginx的主配置文件,通常路径是:/etc/nginx/nginx.conf,不同版本略有不同,可自行查找,打开nginx.conf文件,在 http 块中添加include如下配置来包含其他配置文件:

http {
    include  mime.types;
    default_type  application/octet-stream;
    include /srv/nginx/*.conf; #加载/srv/nginx/目录下的所有conf文件
    #include /srv/nginx/domain_com.conf; #加载具体文件
    .....
    
    #配置日志
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

      access_log /srv/www/logs/access.log main;


4、在重新加载或重启Nginx之前,最好检查一下配置文件是否有语法错误,你可以使用以下命令来检查配置文件:

sudo nginx -t

如果输出显示nginx: configuration file /path/to/nginx.conf test is successful,那么配置文件没有问题,可以安全地重新加载或重启Nginx。

如果提示:nginx: [emerg] unknown directive "server" in /etc/nginx/conf.d/XXX.conf:1

通常是由于文件开头存在不可见字符或 BOM(字节顺序标记)导致的,在从 Windows系统或Xftp等工具编辑文件时,可能会不小心加入了这些字符。
可通过vim命令编辑conf文件,然后通过下面命令删除BOM字节。

:set nobomb   #按Esc键输入此命令删除BOM标记
:wq   #再按按Esc键输入此命令保存退出

如果配置更改后Nginx没有按预期工作,可以查看Nginx的错误日志文件来找原因。日志文件通常位于/var/log/nginx/error.log。你可以使用以下命令查看日志:

sudo tail -f /var/log/nginx/error.log

5、加载新的配置或重启nginx

这是最常用的方法,可以不用完全停止服务即可应用新的配置,使用以下命令:

sudo nginx -s reload

或者,你也可以使用以下命令:

sudo systemctl reload nginx

或者,如果你使用的是service命令:

sudo service nginx reload

重启nginx

如果你发现重新加载配置无效,或者你不确定是否所有的配置都被正确加载,你可以尝试重启Nginx服务:

sudo systemctl restart nginx

或者,如果你使用的是service命令:

sudo service nginx restart

最后输入请求地址检测请求是否按预期的配置工作,如不能正常工作,请检测nginx是否正常启动或查看nginx错误日志来排查。