nginx 常用知识

272 阅读1分钟

标签(空格分隔): linux


[toc]

官方文档 启动Nginx brew services start nginx brew services restart nginx

命令

nginx -s reload 重启,并不会立即生效

查看

nginx -t会测试配置文件的语法,并告诉你配置文件是否写得正确,同时也告诉了配置文件的路径。

nginx -T 能直接显示配置入口文件的内容。

➜  /usr  nginx -t
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful

#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;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    upstream blended_learning{
        server 10.0.0.117:7979;
        # server 54.223.38.76;
    }
    #gzip  on;
    server {
        listen       8281;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location /static/vue {
            autoindex on;
            etag off;
            alias /Users/liujunyang/henry/work/rainvue/static;
        }
        location /static {
            autoindex on;
            alias /Users/liujunyang/henry/work/blended_learning/course_meta/static;
        }
        location /vue_images {
            autoindex on;
            alias /Users/liujunyang/henry/work/rainvue/vue_images;
        }
        location / {
            proxy_pass http://blended_learning;
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            proxy_redirect     off;
            proxy_set_header   Host $host;
            proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
            proxy_set_header X-Forwarded-Port $http_x_forwarded_port;
            proxy_set_header X-Forwarded-For $http_x_forwarded_for;
        }
    }
    include servers/*;
}

日志

常用的存放位置

/var/log/nginx/xt_yuketang_443.log
/var/log/nginx/xt_yuketang_443_error.log

配置

TODO: 整理405 post去请求静态资源的匹配location,也就是配置规则不对。

location解释

  • 一般应该把对根路径 / 的匹配放最后。
  • 如果是匹配的路径的话,路径最后应该有 /,否则就会被视为静态文件? 用 location ^~ /oauth ?
upstream xt_backend{
    server 10.0.3.3:9005;
}
upstream xt_auth{
    server 10.0.3.3:15768;
}

server {
    listen 80;
    listen 443 ssl;
    server_name xt.yuketang.cn mtc-thunder.yuktang.cn;

    access_log  /var/log/nginx/xt_yuketang_443.log;
    error_log /var/log/nginx/xt_yuketang_443_error.log;

    #ssl on;
    ssl_session_cache               shared:SSL:50m;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    ssl_prefer_server_ciphers       on;
    ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
    ssl_certificate /etc/ssl/b.yuketang.cn/yuktang_cn.crt;
    ssl_certificate_key  /etc/ssl/b.yuketang.cn/private_key.key;
    ssl_protocols TLSv1.2 TLSv1.1 TLSv1;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";

    location ^~ /oauth {
	proxy_pass http://xt_auth;
	proxy_set_header Host $host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        client_max_body_size    500m;
    }
    location  / {
	proxy_pass http://xt_backend;
	proxy_set_header Host $host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        client_max_body_size    500m;
    }
}

报错

reload失败

# 机器重启后执行 nginx -s reload 时报下面的错
nginx: [error] open() "/run/nginx.pid" failed (2: No such file or directory)

先 nginx -t 找到配置文件
再 nginx -c /etc/nginx/nginx.conf
再 nginx -s reload 即可