nginx 05 配置指南


不要在 xftp 中修改 nginx.conf,可能会启动报错~

考我做模板!具体配置请看下文

新建文件:nginx/conf/nginx.conf,写入如下内容(demo)

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #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  logs/access.log  main;

    sendfile   on;
    server_tokens off; #隐藏nginx版本

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #开启压缩
    gzip  on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    #gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types text/plain application/javascript application/css  text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary off;
    gzip_disable "MSIE [1-6]\.";

    server {

        listen       9001;
        server_name  11.28.224.17;

        charset utf-8;

        #access_log  logs/host.access.log  main;

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css|js)$ {
            root apps;
            expires 30d;
        }

        location ~* \.(eot|otf|ttf|woff|woff2|svg)$ {
            add_header Access-Control-Allow-Origin *;
            root apps;
            expires -1;
        }

        location / {
            add_header Access-Control-Allow-Origin *;
            root apps;
            try_files $uri $uri/ @router;
            index index.html;
            expires -1;
        }

        location @router {
            rewrite ^.*$ /index.html last;
        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {
            root   html;
        }
    }
}

文件输出-root

前端请求nginx:port/hexoadmin/1.pdf,从/data/nginx/hexoadmin/1.pdf并输出

linux:

location /hexoadmin {
        root   /data/nginx;
        index  index.html index.htm;
}

widnows: (记得用shift旁边的斜杠,不然会报错)

location /download {
        root   F:/nginx;    # 记得用shift旁边的斜杠
        index  index.html index.htm;
}

文件输出-alias

前端请求${basepath}/dubandd/index.html,定位到/data/nginx/dubandd/index.html

注意,alias的后面一定要带斜杠!

location /dubandd/ {
      alias   /data/nginx/dubandd/;
}

root和alias的区别是?

都是文件输出,区别:

  • root映射逻辑:{root的内容}+{location的内容}。
  • alias映射逻辑:{alias的内容}+{location匹配截取后的内容}。
  • 一般情况下,在location /中配置root,在location /${other}中配置alias。

备注:我在部署自己网站的时候,用的是 git 用户,好像用 alias 会出现 403,后来改用 root 才正常

配置转发(代理) proxy_pass

通过配置 proxy_pass,可以将访问 8981 端口的请求转发到另外一个地址上,

这个 proxy_pass ,前端控制台是不知情的,

因为这个是 nginx 内部实现的转发,因此可以使用和 nginx 在一个网络内的内网地址。

server {
    listen       8981;
    server_name  192.168.8.11;
    charset utf-8;
    #access_log  logs/host.access.log  main;    
    location /api/gb28181 {
        proxy_pass http://192.168.8.53:18080/;
        #以下两句话解决代理后项目资源的相对路径问题
        proxy_set_header Host $http_host; 
        proxy_set_header X-Forward-For $remote_addr;
    }
}

注意:proxy_pass 最后面的 / 是讲究的:
若是有 /,则上面的配置是对应 http://192.168.8.53:18080/
若是无 /,则上面的配置是对应 http://192.168.8.53:18080/api/gb28181

(记录一个不确定的问题:不要写 127.0.0.1 可能会引发 6#6: *10 connect() failed (111: Connection refused) while connecting to upstream, client: , server: , request: “GET HTTP/1.1”, upstream: “http://127.0.0.1:18080/auth/login")

配置转发(代理)proxy_pass 处理跨域问题

我们前端调用其他域的后端接口,可能存在N多问题

1)如 https 的网页不能调用 http 接口
2)如对方后端接口设置了拒绝跨域

这个时候我们通过在自己服务器加上 nginx 转发即可达到目的

location /api/front-server/ {
    proxy_redirect off;
    proxy_set_header host $host;
    proxy_set_header x-real-ip $remote_addr;
    proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
    proxy_pass https://www.baidu.com/api/front-server/;
}

配置-重定向

为方便用户访问应用,我们可以配置80端口的重定向功能。
此时用户在浏览器输入192.168.8.53,浏览器地址将变成http://192.168.8.53:8082/index.html

server {
    listen       80;
    server_name  11.28.224.17;
    rewrite ^(.*)$ http://192.168.8.53:8082/index.html redirect;
}

配置应用-vue应用

location @router {
    rewrite ^.*$ /index.html last;
}

配置应用-java应用

需要先掌握上文中的 “ 配置-转发 proxy_pass ”

location /api/shar/ {
            # 部分api需要post的数据较多,配置后避免出现 nginx ..too large错误。
            client_max_body_size    100m;
            proxy_pass http://127.0.0.1:19999;
            proxy_cookie_path /api/shar /api/shar/;
            proxy_set_header Host $host:$server_port;
            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;
}

HTTPS

见这篇文章

如果配置后运行报错:

the “ssl” directive is deprecated, use the “listen … ssl”

见这篇文章,关于 Nginx 配置 https (适用nginx 1.15.0 之后)的介绍


转载请注明来源。 欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。 可以在下面评论区评论,也可以邮件至 sharlot2050@foxmail.com。

文章标题:nginx 05 配置指南

字数:1k

本文作者:夏来风

发布时间:2017-08-25, 15:37:24

原始链接:http://www.demo1024.com/blog/nginx-conf/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。