zoukankan      html  css  js  c++  java
  • nginx 做*

    1、Nginx的常用配置大家可以去搜一下,有很多优秀的博客,我这篇文章要实现的需求是:

      a.根据访问的域名不同,跳转到不同的项目(html首页,80端口)

      b.拦截访问中所有带有api的请求,转发到后端的不同服务器中(Tomcat项目,任意端口)

    2、下面是Nginx的nginx.conf配置文件

    user root root;
    worker_processes  1;
    #worker_cpu_affinity 1;
    worker_rlimit_nofile 60000;
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    pid        /var/run/nginx.pid;
    
    
    events {
        use epoll;
        worker_connections  60000;
    }
    
    
    http {
        include mime.types;
        default_type application/octet-stream;
        server_names_hash_bucket_size 128;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;
        sendfile on;
        tcp_nopush on;
        keepalive_timeout 120;
        server_tokens off;
        tcp_nodelay on;
    
        #ws
    #        map $http_upgrade $connection_upgrade {
    #        default upgrade;
    #        ''      close;
    #    }
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
         fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 128k;
    
        #Gzip Compression
        gzip on;
        gzip_buffers 16 8k;
        gzip_comp_level 6;
        gzip_http_version 1.1;
        gzip_min_length 256;
        gzip_proxied any;
        gzip_vary on;
        gzip_types
            text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml
            text/javascript application/javascript application/x-javascript
            text/x-json application/json application/x-web-app-manifest+json
            text/css text/plain text/x-component
            font/opentype application/x-font-ttf application/vnd.ms-fontobject
            image/x-icon;
        gzip_disable  "msie6";
    
        #If you have a lot of static files to serve through Nginx then caching of the files' metadata (not the actual files' contents) can save 
    some latency.
        open_file_cache max=1000 inactive=20s;
        open_file_cache_valid 30s;
        open_file_cache_min_uses 2;
        open_file_cache_errors on;
    
    
    
            access_log off;
            include vhost/*.conf;
    }

    所有自定义的配置 都在vhost文件夹下面

    3、现在贴出两个vhost文件夹下面的自定义配置

    server {
        listen 80;
        server_name dev.hr.static.baidu.com;
    
        location ~ .*.(gif|jpg|jpeg|png|bmp|swf|flv|ico|js|css|html|woff2|woff)$ {
            root /deploy/www/baidu-www/web-hr;
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Headers X-Requested-With;
            add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
        }
    }
    
    server {
        listen 80;
        server_name dev.am.static.baidu.com;
    
        location ~ .*.(gif|jpg|jpeg|png|bmp|swf|flv|ico|js|css|html|woff2|woff)$ {
            root /deploy/www/baidu-www/web-am;
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Headers X-Requested-With;
            add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
        }
    }

    这个是监听80端口,注意server_name,这个服务名跟你访问的host要一致才可以实现,如果你要进入到hr的首页,那么你在浏览器的输入是dev.hr.static.baidu.com,这样才能正常访问到你指定的页面

    server {
            listen 80;
            server_name am.dev.baidu.com;
            access_log logs/am.baidu.com_nginx.log combined;
            index index.html index.jsp index.php;
    
    location ^~ /api {
            proxy_pass  http://127.0.0.1:8081/;#需要代理的地址
            include proxy.conf;
            }
    
    location ^~ / {
            root /deploy/www/baidu-www/web-am/;
            }
    }

    这个是需要转发的后端服务,这个路径后面可以带项目名,同样也需要注意server——name

    下面是反向proxy.conf的配置

    表示使nginx阻止HTTP应答代码为400或者更高的应答
    #proxy_intercept_errors  on;
    proxy_redirect          off;
    #以下三行,目的是将代理服务器收到的用户的信息传到真实服务器上
    #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
    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_set_header X-Forwarded-Ssl on;
    proxy_set_header Accept-Encoding '';
    proxy_set_header Referer $http_referer;
    proxy_set_header Cookie $http_cookie;
    
    #允许客户端请求的最大单文件字节数
    client_max_body_size 10m;
    #缓冲区代理缓冲用户端请求的最大字节数
    client_body_buffer_size 128k;
    #nginx跟后端服务器连接超时时间(代理连接超时)
    proxy_connect_timeout 300;
    #连接成功后,后端服务器响应时间(代理接收超时)
    proxy_read_timeout 900;
    #设置代理服务器(nginx)保存用户头信息的缓冲区大小
    proxy_buffer_size 32k;
    #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
    proxy_buffers 4 64k;
    #高负荷下缓冲大小(proxy_buffers*2)
    proxy_busy_buffers_size 128k;
    #设定缓存文件夹大小,大于这个值,将从upstream服务器传
    proxy_temp_file_write_size 64k;
    
    proxy_send_timeout 900;
    
    proxy_hide_header Vary;

    最后附上Nginx的重启命令

    进入到Nginx的安装目录下的sbin目录,执行./nginx -t 检查Nginx的配置文件是否正确;执行./nginx -s reload 重启服务

  • 相关阅读:
    laravel 的passport Oauth 认证登录请求 的 oauth_token 重置
    多个php版本的composer使用
    MySQL查询语句练习题(面试时可能会遇到哦!)
    tp5 url 线上访问 在nginx 上 出现404错误,解决办法(1.80nginx 配置 pathInfo)
    源码编译安装lnmp环境(nginx-1.14.2 + mysql-5.6.43 + php-5.6.30 )------踩了无数坑,重装了十几次服务器才会的,不容易啊!
    Mysql错误处理: /usr/bin/mysqld_safe: line xxx: xxxx Killed ... (mysql自动停止 Plugin FEDERATED is disabled 的完美解决方法)
    Plugin 'FEDERATED' is disabled. /usr/sbin/mysqld: Table 'mysql.plugin' doesn't exist
    thinkphp5的mkdir() Permission denied问题
    微信小程序 Unexpected end of JSON input/Unexpected token o in JSON at position 1
    服务器 apache配置https,http强制跳转https(搭建http与https共存)
  • 原文地址:https://www.cnblogs.com/LTmei/p/9522951.html
Copyright © 2011-2022 走看看