itwiki:nginx-practice

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
itwiki:nginx-practice [2021/09/18 12:57] – [NGINX 实践] ovwx@live.ioitwiki:nginx-practice [2024/01/03 12:09] (当前版本) – [Nginx 实践] ovwx@live.io
行 1: 行 1:
-====== NGINX 实践 ======+====== Nginx 基本 ======
  
 > for Nginx v1.20.1 or Later > for Nginx v1.20.1 or Later
-===== 最小化 nginx 静态站配置 ===== 
  
-<file site-xxx.conf>+本实践崇尚快速落地部署,因此整理一些最小化的安装及部署配置,通常情况下,将配置文件复制过去修改部分参数就可以使用。该部分配置为NGINX站点配置,Linux环境下,文件通常保存在:''/etc/nginx/conf.d/''目录下。
  
-server { +===== Nginx安装 =====
-    listen 80; +
-    listen [::]:80; +
-    server_name www.xyz.com; # server_name _ 未提供HOST头部时使用的站点+
  
-    root /var/www/app-path/ +[[https://nginx.org/en/linux_packages.html|nginx.org]]
-    index index.html +
-    location / { +
-    } +
-}+
  
-</file>+我们可以将NGINX的软件源添加到系统中,然后通过系统自带的软件包管理系统,如YUM,DNF,APT之类的进行软件及相关模块安装,使用编译安装也可以,但会在系统中安装一大堆的依赖项,清除也容易清除。
  
-通常指定网站根目录首页即可+查找系统上已经安装的NGINX相关模块 
 +<code> 
 +rpm -qa | grep nginx 
 +</code>
  
 +以CentOS为例安装Nginx相关模块
  
-===== Nginx + 反向代理 + SSL =====+<code> 
 +yum search nginx 
 +yum install nginx-mod-ModName 
 +</code> 
 + 
 + 
 +===== 最小化 nginx 静态站配置 =====
  
 <file site-xxx.conf> <file site-xxx.conf>
 +
 server { server {
     listen 80;     listen 80;
     listen [::]:80;     listen [::]:80;
-    server_name www.xxx.com; +    server_name www.xyz.com; server_name _ 未提供HOST头部时使用的站点
-    return 301 https://$server_name:443$request_uri; +
-}+
  
-server { +    root /var/www/app-path
-    listen       443 ssl http2; +    index index.html
-    listen       [::]:443 ssl http2; +
-    server_name c.ezua.com; +
-    charset utf-8; +
- +
-    # ssl配置 +
-    ssl_protocols TLSv1.1 TLSv1.2; +
-    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; +
-    ssl_ecdh_curve secp384r1; +
-    ssl_prefer_server_ciphers on; +
-    ssl_session_cache shared:SSL:10m; +
-    ssl_session_timeout 10m; +
-    ssl_session_tickets off; +
-    ssl_certificate /etc/letsencrypt/live/www.xxx.com/fullchain.pem; +
-    ssl_certificate_key /etc/letsencrypt/live/www.xxx.com/privkey.pem; +
- +
-    root /usr/share/nginx/html;+
     location / {     location / {
-        proxy_ssl_server_name on; 
-        proxy_pass https://bing.imeizi.me; 
-        proxy_set_header Accept-Encoding ''; 
-        sub_filter "bing.imeizi.me" "www.xyz.com"; 
-        sub_filter_once off; 
-    } 
-     
- 
-    location /long-long-path { 
-      proxy_redirect off; 
-      proxy_pass http://127.0.0.1:20860; 
-      proxy_http_version 1.1; 
-      proxy_set_header Upgrade $http_upgrade; 
-      proxy_set_header Connection "upgrade"; 
-      proxy_set_header Host $host; 
-      # Show real IP in v2ray access.log 
-      proxy_set_header X-Real-IP $remote_addr; 
-      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     }     }
 } }
行 74: 行 41:
 </file> </file>
  
-其中: +指定网站根目录首页即
-  - 第一个 location 是用路径反代,获取之后数据之后对部分内容进行替换。''sub_filter''令将获取到的部分内容进行替换 +
-  - 使用了高级功能的一些网站可能需要进行传递 Upgrade,以及 Connection 头部,如:WebSocket +
-  - X-Real-IP 多用于代理服务器,向真实服务器传递远程客户端IP地址 +
-  - Server Listen 80 端口,并使用301重向 +
-  - X-Forwarded-For XFF头不是标准HTTP头部 +
-  - 第二个 location 可以设置的长一点,这样可以把该路径隐藏在转发的网站中 +
- +
-===== Nginx + PHP-fpm + SSL ===== +
- +
-==== 预装PHPPHP-FPM环境 ==== +
- +
-==== 配置PHP fastcgi 转发 ==== +
- +
-<file site-php-fpm.conf> +
- +
-server { +
-    listen       443 ssl http2; +
-    listen       [::]:443 ssl http2; +
-    server_name www.c.ezua.com; +
-    charset utf-8; +
- +
-    # ssl配置 +
-    ssl_protocols TLSv1.1 TLSv1.2; +
-    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; +
-    ssl_ecdh_curve secp384r1; +
-    ssl_prefer_server_ciphers on; +
-    ssl_session_cache shared:SSL:10m; +
-    ssl_session_timeout 10m; +
-    ssl_session_tickets off; +
-    ssl_certificate /etc/letsencrypt/live/www.c.ezua.com/fullchain.pem; +
-    ssl_certificate_key /etc/letsencrypt/live/www.c.ezua.com/privkey.pem; +
- +
-    #root /var/www/html/; +
-    root /var/www/dokuwiki/; +
-    index index.php; +
-    location ~ \.(php|php5).* { +
-        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; +
-        fastcgi_pass unix:/var/run/php-fpm/www.sock; +
-        include fastcgi_params; +
-    } +
- +
-    location / { +
- +
-    } +
- +
-+
- +
-</file> +
- +
-在配置方面与普通的反代没有区别,'' fastcgi_pass '' 除了可以用unix sockets方式转发外,还以使用 ''%%tcp://127.0.0.1:9000%% '' 的形式配置,要看 ''php-fpm.conf'' 配置文件里面监听的是socket还是端口+
  
-===== Nginx + 负载均衡 ===== 
  
-暂未涉及 
  
 ===== Nginx location 及访问控制 ===== ===== Nginx location 及访问控制 =====
行 162: 行 77:
 } }
 </code> </code>
 +
 +**对指定路径进行HTTP BASIC认证**
 +<code>
 +location / {
 +    auth_basic "访问需要认证";
 +    auth_basic_user_file /etc/nginx/conf.d/htpasswd; 
 +    #autoindex on;
 +}
 +</code>
 +需要注意认证文件位置,否则会一直无法认证
 +
 +使用以下命令生成所需的PASSWORD文件
 +<code>
 +printf "hsiaotien:$(openssl passwd -crypt 123456)\n" >> conf/htpasswd
 +#用户名:hsiaotien, 密码:123456
 +#注意:密码不要超过8位,否则可能无法工作。也因此在有条件的情况下,不要使用BASIC认证方式
 +</code>
 +
 +
 +===== 其他范例 =====
 +
 +  * 用作代理服务器 [[itwiki:nginx-proxy|NGINX 代理]]
 +  * 搭建 dokuwiki [[itwiki:nginx-doku|搭建DOKUWIKI ]]
 +  * 用于支持PHP的配置 [[itwiki:nginx-php|支持PHP ]]
  
  
  • itwiki/nginx-practice.1631962648.txt.gz
  • 最后更改: 2021/09/18 12:57
  • ovwx@live.io