nginx常用命令与配置

一、nginx安装

官网下载: https://nginx.org/en/download...

1.)windows直接下载相应版本
2.)mac系统:

$ brew install nginx

3.)centOS系统:

安装nginx依赖库pcre、zlib
$  yum install pcre pcre-devel  
$  yum install zlib zlib-devel
如有必要,可以安装c++编译环境和openssl
$  yum install gcc-c++
$  yum install openssl openssl-devel
下载/编译nginx
$ wget -c https://nginx.org/download/nginx-1.14.2.tar.gz
$ tar -zxvf nginx-1.14.2.tar.gz

# 编译安装
$ cd nginx-1.14.2
$ ./configure  # 默认安装在/usr/local/nginx 
$ make && make install

# 创建软链
$ ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx
$ nginx -v

二、nginx命令

# 启动
$ ./nginx  # linux/mac系统
> start nginx # windows系统

# 重启
$ nginx -s reload

# 关闭
$ nginx -s stop

# 查看端口
$ netstat -an | grep 端口  # linux/mac系统
> netstat -an | findstr 端口  # windows系统
$ telnet x.x.x.x 端口 # 测试远程端口服务

# 查看进程
$ ps -ef | grep linux

# 查看nginx.conf配置文件目录
$ nginx -t

# 查看错误日志
$ tail -n30 /var/log/nginx/error.log

三、nginx配置

1、 创建一个标准的server
nginx.conf里添加include conf.d/*.conf, 在conf.d下新建server.conf,配置如下:
server {
    listen       80;
    server_name  xxx.domain.com;

    client_max_body_size            100m;
    
    location / {
        root   E:/workspace/project;  # 项目所在目录
        index  index.html index.htm;
        #try_files  $uri $uri/ /index.html;  # vue单页应用需要路由始终指向index.html
    }
}
2、 配置ssl证书实现https访问
复制.pem和.key两种证书到当前server配置同一个目录下
server {
    listen       443;
    server_name  xxx.domain.com;
    ssl on;
    ssl_certificate             my.pem;    # 替换成自己的证书
    ssl_certificate_key         my.key;    # 替换成自己的证书
    ssl_session_timeout         5m;
    ssl_protocols SSLv3 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!AESGCM;
    ssl_prefer_server_ciphers   on;

    location / {
        ...
    }
}
3、api接口反向代理
    location /api {
        proxy_pass   http://yyy.domain.com:9000;  # 最终地址会加上/api,变成 /api/xxx
        #proxy_cookie_domain   yyy.domain.com xxx.domain.com; # 需要修改接口返回的cookie域名时使用
    }
需要注意的是,proxy_pass路径有相对和绝对之分,如:proxy_pass http://yyy.domain.com:9000/; # 最终地址会替掉/api,变成 /xxx
4、upstream负载均衡
upstream apiServer { 
    server 10.0.0.80:5000;  # 如果需要权重加 weight=数字
    server 10.0.0.81:5000;
}
server {
    listen       80;
    server_name  xxx.domain.com;

    location /api {
        proxy_pass   http://apiServer;
    }
}

需要注意的是:

upstream名称,在某些条件下,可以当成主机名传给后端Java应用。当upstream名称中含有下划线的时候,Java会把主机名当做域名来按照[RFC2396]解析,结果就会返回Null,在某些版本的Spring框架里就会触发服务器内部错误,此类问题相当隐蔽。
域名命名规则

建议:upstream名称不包含下划线,实践中使用驼峰命名规范貌似比较合适

5、 允许它站跨域访问

在 location /api {}里添加以下项

    add_header Access-Control-Allow-Origin *;  # *表示允许所有站跨域访问(不安全,建议指定具体允许的域名如:http://yyy.domain.com:9000(注意格式:http(s):// + domain + port,末尾也不能加/)
    add_header Access-Control-Allow-Credentials true;  #此项为允许带cookie跨域访问,若设置true,上面域名配置不能为*,必须指定具体域名
6、开启gzip压缩

gzip字段设置on,并设置哪些类型文件需要压缩。

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

    gzip             on;
    gzip_min_length  10k;
    gzip_comp_level  5;
    gzip_types       text/plain text/css application/x-javascript application/javascript text/javascript;

    server {
        ....
    }
7、其它问题
1.) 访问服务报403权限
需要修改nginx.conf里的user,比如user root;
2.) nginx重启时报pid错:
nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"
解决方案:

使用nginx -c的参数指定nginx.conf文件的位置:

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值