美文网首页
ngnix实战与应用

ngnix实战与应用

作者: xiongmao_123 | 来源:发表于2022-07-03 19:29 被阅读0次

    以前开发学习网站应用的,学习使用过诸如 apachetomcat 这类的服务器。
    nginx 也是久闻大名,正好学习下相关配置。

    HTTP服务:
    作为一个web资源服务器,提供数据的地方。包括图片,视频,代码,接口等等。

    正向代理:
    转为一个中间代理服务器,转发中心。比如:
    browser -> nginx -> website
    它把请求传给nginx,nginx帮你去request,然后把response返回给你。

    反向代理+负载均衡:
    browser -> nginx -> website1/webstie2
    它把请求传给nginx,nginx根据均衡算法看看去请求哪个服务器的资源。但是有个疑问,这样对于nginx均衡服务器来说,压力不是很大吗?

    实例:
    代理请求baidu

    在 /etc/nginx/sites-enabled 文件夹内新增 baidu.conf 配置文件,配置内容为:

    server {
        listen 10011; 
        server_name 192.168.1.1;
     
        location / {
            auth_basic "Hello World";
            auth_basic_user_file conf.d/passwd;
            
            proxy_pass https://www.baidu.com/;
     
            proxy_redirect https://www.baidu.com/ ;
            proxy_cookie_domain baidu.com 192.168.1.1;
     
            proxy_set_header User-Agent $http_user_agent;
            proxy_set_header Cookie "PREF=ID=abcdefg";
     
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     
            sub_filter  http://www.baidu.com 192.168.1.1;
            sub_filter  https://www.baidu.com 192.168.1.1;
        }
    }
    

    然后 nginx -s reload 重启下即可。

    我们还可以增加Basic Auth认证

    先使用openssl生成密码:

    $ printf "your_username:$(openssl passwd -crypt your_password)\n" >> /etc/nginx/conf.d/passwd
    

    然后再配置内容中增加:

    ...
    location / {
            auth_basic "Hello World";
            auth_basic_user_file conf.d/passwd;
    
            proxy_pass https://www.baidu.com/;
    ...
    

    然后 nginx -s reload 重启即可。

    增加https
    首先检查是否安装有这个模块, nginx -V,查看是否有 --with-http_ssl_module配置。如果没有,则要查询怎么配置ssl。
    然后使用 openssl 来生成 .key 和 .crt 文件

    制作密钥
    openssl genrsa -out test.key 2048

    制作证书
    openssl req -new -x509 -days 365 -key test.key -out test.crt

    把域名证书放入 /etc/nginx/ssl 文件夹下。

    然后按照如下配置:

    server {
        listen 443;
        server_name test.com; 
        ssl on;
        ssl_certificate /etc/nginx/ssl/test.crt; 
        ssl_certificate_key/etc/nginx/ssl/test.key; 
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
        }
    }
    

    然后重新加载nginx即可。

    参考:
    nginx制作和添加ssl证书 - 腾讯云开发者社区-腾讯云 (tencent.com)

    相关文章

      网友评论

          本文标题:ngnix实战与应用

          本文链接:https://www.haomeiwen.com/subject/svhrbrtx.html