nginx的nginx.conf配置介绍


一、介绍

  • http默认port是80,如果配置的port是80,访问时不用添加port
  • 一个项目多个前端模块,则在一个server中配置
  • 多个项目则配置多个server,ip 或 port 配置成不同
  • 配置完成后防火墙要放开 配置的端口

二、配置

#1、全局块

#指定运行worker进程的用户和组:user USERNAME [GROUPNAME];
#组可省
#注释掉也默认用户nobody,一般服务器没有nodoby用户,一般指定为分配的用户或者root,这样nginx才会有前端文件夹的权限
#user  nobody;

#允许生成的进程数,默认为1
worker_processes  1;

#指定全局错误日志的位置、级别,默认nginx/logs/error.log
#级别由低到高:debug|info|notice|warn|error|crit|alert|emerg
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#nginx进程文件生成位置
#pid        logs/nginx.pid;


#2、events块,配置影响nginx服务器或与用户的网络连接
events {
    #单个进程最大连接数(最大连接数=连接数*进程数)
    worker_connections  1024;
}

#3、http块,可以嵌套多个server,配置代理,缓存、日志
http {
    #文件扩展名与文件类型映射表
    include       mime.types;
    
    #默认的文件类型
    default_type  application/octet-stream;
    
    #定义日志的输出格式
    #$server_name			虚拟主机名称
    #$remote_addr			远程客户端的IP地址,请求者IP
    #$remote_user			远程客户端用户名称,用于记录浏览者进行身份验证时提供的名字
    #[$time_local]			访问的时间与时区
    #$request				请求的url、HTTP协议
    #$status				请求返回的http状态码
    #$body_bytes_sent		发送给客户端的文件主体内容的大小
    #$http_referer			用来记录从那个页面链接访问过来的
    #$http_user_agent		客户端浏览器的相关信息
    #http_x_forwarded_for	客户端的真实ip
    log_format  main  '$remote_addr - $remote_user [$time_local] - "$request" '
                      '$status - $body_bytes_sent - "$http_referer" '
                      '"$http_user_agent" - "$http_x_forwarded_for"';

    #指定所有server访问的日志输出位置(未指定则nginx/logs/access.log)、格式(log_format-main定义的输出格式)
    access_log  logs/access.log  main;

    #允许sendfile方式传输文件,开启高效传输模式
    sendfile        on;

    #防止网络阻塞
    #tcp_nopush     on;

    #连接超时时间,单位s
    #keepalive_timeout  65;

    #是否开启gzip压缩输出
    #gzip  on;
    
    #当多个项目使用nginx虚拟主机配置时,每个项目创建一个project.conf,只写server块内容,以下的内容就散落在各个项目对应的配置文件中
    include /etc/nginx/conf.d/*.conf;
    
   #5、配置虚拟主机的配置
    server {
        #监听端口
        listen       8080;
        
        #监听地址,可以是ip(localhost)或者域名(www.test.com),配置域名之后ip:post的形式依旧可以访问
        server_name  localhost;

        #编码格式,若网页格式与此不同,将被自动转码
        #charset koi8-r;

        #该server的访问日志,输出位置、格式(log_format - main定义的日志输出格式)未定义则使用 http 下的access_log配置
        #access_log  logs/host.access.log  main;


        location / {
            #项目部署位置
            root   /home/safe/dist;
            
            #解决路由url页面刷新404
            #当我们访问路由中的url时,nginx并没有配置这个url,所以404,只针对Router - history模式
            #hash模式只有一个index.html页面,其他组件只是锚点,所以不会有该问题
     	    try_files $uri $uri/ /index.html;

            #替代一些rewrite的指令,提高解析效率,按顺序检查文件是否存在
            #访问此url 会去访问/home/ui/index.html或者index.htm
            index  index.html index.htm;
            
            #设置缓存时间,用户在缓存时间内访问,都只会访问浏览器中的缓存,而不会去请求nginx,单位:s、m、h、d
            #expires  1d;
     
            #设置禁止浏览器缓存,每次都从服务器请求
            #add_header Cache-Control no-cache;
            #add_header Cache-Control private;

            #nginx默认是不允许列出整个目录的(一般下载会使用),autoindex on-启用目录流量
            #autoindex_exact_size默认为on,显示出文件的确切大小,单位是bytes;off-显示出文件的大概大小,单位是kB或者MB或者GB
            #autoindex_localtime默认为off,显示的文件时间为GMT时间on-显示的文件时间为文件的服务器时间
            #autoindex on;
            #autoindex_exact_size on;
            #autoindex_localtime off;
       }
       
       #当请求跨域时配置端口转发
       location /prod-api/ {
             proxy_set_header Host $http_host;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header REMOTE-HOST $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             #转发地址
             proxy_pass http://localhost:8088/race/;
       }
            #proxy_pass
              #1)配置的转发地址末尾加  / (http://localhost:8088/),表示绝对根路径,nginx不会把location中匹配的路径部分代理走。访问localhost:8080/prod-api/get=访问http://localhost:8088/race/get
              #2)配置的转发地址末尾不加 / (http://localhost:8088),表示相对路径,把匹配的路径部分也给代理走。访问localhost:8080/prod-api/get=访问http://localhost:8088/race/prod-api/get

       #该server状态码404时,返回的页面
       #error_page  404              /404.html;

        
       error_page   500 502 503 504  /50x.html;
       #该server状态码50X的错误页面位置,默认nginx/html/50x.html
       location = /50x.html {
            root   html;
       }
    }

    #第二个虚拟主机配置
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
    
    #第三个虚拟主机配置,ssl
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

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

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

三、示例

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        root D:/code/project-ui;
        try_files $uri $uri/ /index.html;
        index  index.html index.htm;
    }

    location /prod-api/{
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:8080/race/;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kimi-001

只想在有限的时间分享更多的知识

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值