900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 目录和文件暴露在根目录下的 nginx 配置演示

目录和文件暴露在根目录下的 nginx 配置演示

时间:2020-05-26 05:34:07

相关推荐

目录和文件暴露在根目录下的 nginx 配置演示

目录

一、统一环境:

1)安装docker-desktop

2)之后,请确保已经安装并启用了适用于 Linux 的 Windows 子系统 2 (WSL2)。

3)然后在Microsoft Store 里安装任意 Linux 版本。

4)使用 windows 子系统,需要在Microsoft Store 安装windows Terminal 工具,方便进入 Linux 子系统

二、站点目录结构

三、nginx 详细配置文件:

参照官方文档:

1)nginx http 核心模块

2)nginx 模块ngx_http_fastcgi_module配置文档(php 配置部分)

3)php 官方安装配置示例:

说明:

1)上面的代码抄在这里:limit_req_zone $binary_remote_addr zone=limiter:10m rate=80r/s; rate 不要设置太低,否则 phpMyAdmin 连接数据库时会报错。

2)本案例的 fastcgi_params 内的文件内容如下:

四、目录和文件加密:

文件和目录加密后的效果图

1.对 phpinfo.php 敏感文件加密的效果

2.对目录加密的效果

3.对 php 文件加密的效果

4.对其它文件禁用的效果

5.在线生成密码

6.passwd 文件存放内容示意图

五、常用nginx 配置的内置变量

六、nginx配置禁止访问目录或禁止访问目录下的文件

禁止访问目录下的文件

禁止访问特定后缀文件

禁止访问某个目录下的php后缀文件

禁止访问多个目录下的php后缀文件

禁止访问目录或目录下文件

禁止访问目录

禁止访问目录下文件

nginx location 的匹配语法

七、nginx 限流功能

配置如下

八、Nginx 的 fastcgi 模块提供了 fastcgi_param 指令来处理这些映射关系

这只能是一种构想,现实中并不是随心所欲都能够去配置主机,也许别人包含了一段配置在根目录下面,权限受限的情况怎么办?比如说像百度云的虚拟主机就是这样的,对于许多中小型网站来说性能已经足够了。今天,就用 CodeIgliter 来开刀改造一下,把 public 下面的 index.php 文件放入根目录下面,里面的目录和文件暴露在根目录下面,也就暴露在互联网下面了(这种方法是不可取的,以前的 CodeIgliter 就是这样干的),修改了一下代码,使框架运行正常,这就是 CodeIgliter 原来的样子,现在越来越像 laravel 了。

根目录下面添加进 phpMyAdmin Mysql 数据库管理、phpRedisAdmin Redis 数据库管理和 Kodexplorer资源管理器。这些文件和目录全都暴露在根目录下,也就暴露在了互联网中。下面的配置就是解决在这种情况下,如何加密和禁用这些目录和敏感文件。

一、统一环境:

1)安装docker-desktop:

Docker Desktop for Mac and Windows | Docker/products/docker-desktop

2)之后,请确保已经安装并启用了适用于 Linux 的 Windows 子系统 2 (WSL2)。

WSL 允许你在 Windows 10 上运行 Linux 二进制文件。关于如何安装并启用 WSL2,请参阅微软开发者文档:

安装 WSL | Microsoft Docs/zh-cn/windows/wsl/install

3)然后在Microsoft Store 里安装任意 Linux 版本。

4)使用 windows 子系统,需要在Microsoft Store 安装windows Terminal 工具,方便进入 Linux 子系统:

5)lnmp 镜像地址:.2233466866/lnmp - Docker Image | Docker Hub/r/2233466866/lnmp6)docker 操作命令,几个命令就可以解决了:

# 以下步骤要一个一个地来# 以下内容如果复制,不要复制 $# 如果不是root用户,还需将当前用户加入 docker 用户组$ sudo gpasswd -a ${USER} docker# 1.拉取镜像$ docker pull 2233466866/lnmp# 2.生成容器命令$ docker run -dit \-p 80:80 \ # 与宿主机绑定端口,才能用 http://localhost 访问-p 443:443 \ # 与宿主机绑定端口,才能用 https://localhost 访问(需要配置)-p 3306:3306 \ # MySQL 数据库访问端口-p 9000:9000 \ # nginx 与 php 服务通信端口,同一容器下其实不用配置,官方偏要这样-v /home/user/www:/www \ # 容器内站点目录绑定到宿主机目录-v /home/user/mysql:/data/mysql \ # 容器内数据库目录绑定到宿主机目录--restart=always \ # 开机容器自启--privileged=true \ # 使用该参数,容器内的 root 用户拥有真正的 root 权限。--name=lnmp \ # 容器名称2233466866/lnmp # 镜像名称# user 是你自己的用户名,不要完全照抄。# 以上的多行命令复制到 windows Terminal 命令行,按确定键即可。# 3. 遍历容器,主要是获取容器 id,命令中 lnmp 可以换成 id$ docker ps# 4.进入容器命令,注意:容器名称要一致$ docker exec -it lnmp /bin/bash# 5.修改 Nginx 配置$ vi /usr/local/nginx/conf/nginx.conf# 注释掉 server 及以后的内容,添加 include /www/nginx.conf

7)MySQL 数据库可能要用到密码破解,这里不再详述,请搜索其它文章解决。

8)不要在 Windows 环境下尝试 nginx 配置,特别是在像 phpStudy、Wamp等等这样的环境下尝试 nginx 配置,因为 Windows 环境下安装的软件比较多,有些软件自带环境,相互干扰,使配置失效。尤其同时安装上 docker-desktop 和 phpStudy 这两个软件,干扰更大。

9)进入子系统站点目录编辑 code . 即可打开 VSCode 编辑器并且打开此目录,代码如下:

myusername@DESKTOP-J1SOKCR:~$ code .

二、站点目录结构:

三、nginx 详细配置文件:

参照官方文档:

1)nginx http 核心模块:

模块ngx_http_core_module ()/en/docs/http/ngx_http_core_module.html#var_time_local

2)nginx 模块ngx_http_fastcgi_module配置文档(php 配置部分):

Module ngx_http_fastcgi_module ()/en/docs/http/ngx_http_fastcgi_module.html

3)php 官方安装配置示例:

PHP: Unix 系统下的 Nginx 1.4.x - Manual/manual/zh/install.unix.nginx.php

# 站点日志配置error_log /www/writable/logs/z_error.log;access_log/www/writable/logs/z_$host.log main;# 防爆破破解密码,每秒钟只能允许访问 80 次,超过报错。# zone=name:size,分配一个以 name 为名的并且大小为 size 的内存空间,用来存储访问的频次信息,对应:limiter:10m;# rate=rate, 如rate=1r/s表示同一个IP每秒只允许一个请求通过。# 参考官方文档配置:/en/docs/http/ngx_http_limit_req_module.html## 注意:这里 rate=80r/s 的值不要太低,否则 phpMyAdmin 连接数据库时会报 503 错误(设置成 50r/s 就开始报错了)!!limit_req_zone $binary_remote_addr zone=limiter:10m rate=80r/s;# 站点配置server {listen80; # 访问站点的端口server_name localhost; # 访问站点的域名root /www; # 站点映射的本地绝对目录。绝对目录: /directory/subdirectory 相对目录: ./directory/subdirectorylocation / {index index.php index.html index.htm;# 去除 index.php 的配置,必须配置,否则程序出错!try_files $uri $uri/ /index.php?$query_string;}# 根目录下对 php 扩展文件的配置。location ~* \.php {#------------------------------------------------------------------------# fastcgi_params 是 fastcgi 模块配置文件,一般在本配置的同级目录下。# 主要完成的工作是将 Nginx 中的变量翻译成 PHP 中能够理解的变量。# 具体内容,见此代码段的后面。## 参见文档地址:/en/docs/http/ngx_http_fastcgi_module.html# #------------------------------------------------------------------------include fastcgi_params;fastcgi_index index.php;#------------------------------------------------------------------------# 1.指定FastCGI服务器监听地址与端口,可以是本机或者其它:# fastcgi_pass localhost:9000 # 如果 nginx 与 php 分开:fastcgi_pass 185.6.5.1:9000# # 2.使用Unix socket:# fasrcgi_pass unix:/tmp/fastcgi.socket;## 3.可以使用一个 upsteam 字段名称:# upsteam backend {#server localhost:9800# }## fastcgi_pass backend;#-----------------------------------------------------------------------fastcgi_pass 127.0.0.1:9000; # nginx 与 php 通信的端口是: 9000fastcgi_split_path_info ^(.+\.php)(.*)$;fastcgi_param PATH_INFO $fastcgi_path_info;fastcgi_param SCRIPT_NAME$fastcgi_script_name;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}# 禁止访问的扩展。location ~* \.(?:htaccess|txt|sql|conf|cnf|json|lock|md|dist|log|logs|xml|env|gitignore|ini|sh)?$ {# 如果禁用了某些文件而找不到原因,可以在不同的 location 里设置不同的返回错误标志,# 即可找到是哪一个 location 禁用了文件或者目录。如:# 测试:# return 405;return 404;}# 允许访问的扩展location ~ \.(?:css|js|jpg|jpeg|png|gif)?$ {allow all;}# 禁止访问 Linux 系统的隐藏文件location ~* /\.+ {# 测试:# return 406;return 404;}# 禁止访问的无后缀文件都放在这里,返回 404location ~* (?:htpass*|spark|LICENSE) {# 测试:# return 407;return 404;}#-----------------------------------------------------------------------# 可道云资源管理器的配置# 可道云官网:/# 可道云下载地址:/update/download/kodexplorer4.47.zip#-----------------------------------------------------------------------location /kodexplorer {index index.php index.html index.htm;root /www;# 访问目录时鉴权auth_basic "Authorized users only";auth_basic_user_file /www/htpasswd;# 防爆破限流# 参考官方文档配置:/en/docs/http/ngx_http_limit_req_module.html## limiter 对应 server 上面的代码,重新写在下面:# limit_req_zone $binary_remote_addr zone=limiter:10m rate=20r/s;# 中的 limiter,格式:zone=name:sizelimit_req zone=limiter burst=1 nodelay;# 在 /kodexplorer 目录下访问 php 文件时鉴权。location ~ .*\.(?:php)?$ {# 再次对 php 扩展文件配置,否则在 /kodexplorer 目录内 php 不解析。include fastcgi_params;fastcgi_index index.php;fastcgi_pass 127.0.0.1:9000;fastcgi_split_path_info ^(.+\.php)(.*)$;fastcgi_param PATH_INFO $fastcgi_path_info;fastcgi_param SCRIPT_NAME$fastcgi_script_name;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;index index.php index.html index.htm;# 鉴权auth_basic "Authorized users only";auth_basic_user_file /www/htpasswd;# 防爆破限流limit_req zone=limiter burst=1 nodelay;}}#-----------------------------------------------------------------------# phpMyAdmin Mysql 数据库管理器的配置# 官方地址:/# 项目地址:/phpmyadmin/phpmyadmin#-----------------------------------------------------------------------location /phpMyAdmin {index index.php index.html index.htm;root /www;# 访问目录时鉴权auth_basic "Authorized users only";auth_basic_user_file /www/htpasswd;# 防爆破限流limit_req zone=limiter burst=1 nodelay;# 在 /phpMyAdmin 目录下访问 php 文件时鉴权。location ~ .*\.(?:php)?$ {# 再次对 php 扩展文件配置,否则在 /phpMyAdmin 目录内 php 不解析。include fastcgi_params;fastcgi_index index.php;fastcgi_pass 127.0.0.1:9000;fastcgi_split_path_info ^(.+\.php)(.*)$;fastcgi_param PATH_INFO $fastcgi_path_info;fastcgi_param SCRIPT_NAME$fastcgi_script_name;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;index index.php index.html index.htm;# 鉴权auth_basic "Authorized users only";auth_basic_user_file /www/htpasswd;# 防爆破限流limit_req zone=limiter burst=1 nodelay;}}# 对敏感文件加密location /phpinfo.php {# 访问时鉴权location ~ .*\.(?:php)?$ {# 再次对 php 扩展文件配置,否则在 /phpinfo.php 文件中对 php 不解析。include fastcgi_params;fastcgi_index index.php;fastcgi_pass 127.0.0.1:9000;fastcgi_split_path_info ^(.+\.php)(.*)$;fastcgi_param PATH_INFO $fastcgi_path_info;fastcgi_param SCRIPT_NAME$fastcgi_script_name;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;index index.php index.html index.htm;# 鉴权auth_basic "Authorized users only";auth_basic_user_file /www/htpasswd;# 防爆破限流limit_req zone=limiter burst=1 nodelay;}}#-----------------------------------------------------------------------# phpRedisAdmin Redis 数据库管理器的配置# 项目地址:/erikdubbelboer/phpRedisAdmin# 演示地址:/phpRedisAdmin/?overview#-----------------------------------------------------------------------location /phpRedisAdmin {index index.php index.html index.htm;root /www;# 访问目录时鉴权auth_basic "Authorized users only";auth_basic_user_file /www/htpasswd;# 在 /phpRedisAdmin 目录下访问 php 文件时鉴权。location ~ .*\.(?:php)?$ {# 再次对 php 扩展文件配置,否则在 /phpRedisAdmin 目录内 php 不解析。include fastcgi_params;fastcgi_index index.php;fastcgi_pass 127.0.0.1:9000;fastcgi_split_path_info ^(.+\.php)(.*)$;fastcgi_param PATH_INFO $fastcgi_path_info;fastcgi_param SCRIPT_NAME$fastcgi_script_name;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;index index.php index.html index.htm;# 鉴权auth_basic "Authorized users only";auth_basic_user_file /www/htpasswd;# 防爆破限流limit_req zone=limiter burst=1 nodelay;}}# 以下是在一些目录下禁止访问 php 文件# 用此写法无效,还是要一个一个地写# location /kodexplorer/(?:app|config|data|plugins|static)?$ {#location ~ .*\.(?:php)?$ {# return 404;#}# }location /kodexplorer/app {location ~ .*\.(?:php)?$ {# 测试:# return 408;return 404;}}location /kodexplorer/config {location ~ .*\.(?:php)?$ {return 404;}}location /kodexplorer/data {location ~ .*\.(?:php)?$ {return 404;}}location /kodexplorer/plugins {location ~ .*\.(?:php)?$ {return 404;}}location /kodexplorer/static {location ~ .*\.(?:php)?$ {return 404;}}location /phpMyAdmin/doc {location ~ .*\.(?:php|css|html|png|jpg|jpeg|gif)?$ {# 访问 phpMyAdmin 手册文件鉴权auth_basic "Authorized users only";auth_basic_user_file /www/htpasswd;# 防爆破限流limit_req zone=limiter burst=1 nodelay;}}location /phpMyAdmin/examples {location ~ .*\.(?:php)?$ {return 404;}}location /phpMyAdmin/js {# 对 php 扩展禁用# 这里不能禁用,否则管理器页面点击失效!#location ~ .*\.(?:php)?$ {# return 404;#}# 对其它扩展放行,主要是 js 和 css 文件,# 其实可以不写,写上可以给 Nginx 明确指示。allow all;}location /phpMyAdmin/libraries {location ~ .*\.(?:php)?$ {return 404;}}location /phpMyAdmin/local {location ~ .*\.(?:php)?$ {return 404;}}location /phpMyAdmin/setup {location ~ .*\.(?:php)?$ {return 404;}}location /phpMyAdmin/sql {location ~ .*\.(?:php|sql)?$ {return 404;}}location /phpMyAdmin/templates {location ~ .*\.(?:php)?$ {return 404;}}location /phpMyAdmin/themes {location ~ .*\.(?:php)?$ {return 404;}}location /phpMyAdmin/tmp {location ~ .*\.(?:php)?$ {return 404;}}location /phpMyAdmin/vendor {location ~ .*\.(?:php)?$ {return 404;}}location /phpRedisAdmin/.github {location ~ .*\.(?:yml)?$ {return 404;}}location /phpRedisAdmin/include {location ~ .*\.(?:php)?$ {return 404;}}}

说明:

1)上面的代码抄在这里:limit_req_zone $binary_remote_addr zone=limiter:10m rate=80r/s; rate 不要设置太低,否则 phpMyAdmin 连接数据库时会报错,报错如下:

2)本案例的 fastcgi_params 内的文件内容如下:

fastcgi_param QUERY_STRING $query_string;fastcgi_param REQUEST_METHOD$request_method;fastcgi_param CONTENT_TYPE $content_type;fastcgi_param CONTENT_LENGTH$content_length;fastcgi_param SCRIPT_NAME $fastcgi_script_name;fastcgi_param REQUEST_URI $request_uri;fastcgi_param DOCUMENT_URI $document_uri;fastcgi_param DOCUMENT_ROOT$document_root;fastcgi_param SERVER_PROTOCOL $server_protocol;fastcgi_param REQUEST_SCHEME$scheme;fastcgi_param HTTPS $https if_not_empty;fastcgi_param GATEWAY_INTERFACE CGI/1.1;fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;fastcgi_param REMOTE_ADDR $remote_addr;fastcgi_param REMOTE_PORT $remote_port;fastcgi_param SERVER_ADDR $server_addr;fastcgi_param SERVER_PORT $server_port;fastcgi_param SERVER_NAME $server_name;# PHP only, required if PHP was built with --enable-force-cgi-redirectfastcgi_param REDIRECT_STATUS 200;

四、目录和文件加密:

文件和目录加密后的效果图:

1.对 phpinfo.php 敏感文件加密的效果:

2.对目录加密的效果:

3.对 php 文件加密的效果:

4.对其它文件禁用的效果:

5.在线生成密码:

开源中国:在线 htpasswd 生成器 ()/htpasswd

6.passwd 文件存放内容示意图:

五、常用nginx 配置的内置变量:

$remote_addr;

存放了客户端的地址,注意是客户端的公网IP,也就是一家人访问一个网站,则会显示为路由器的公网IP

$args;

变量中存放了URL中的指令,例如/main/index.php?id=12&partner=search中的id=12&partner=search

$document_root;

保存了针对当前资源的请求的系统根目录,如/apps/nginx/html。

$document_uri;

保存了当前请求中不包含指令的URI,注意是不包含请求的指令,比如/main/index.php?id=12&partner=search会被定义为/main/index.php。

$host;

存放了请求的host名称。

$http_user_agent;

客户端浏览器的详细信息

$http_cookie;

客户端的cookie信息。

limit_rate 10240;

echo $limit_rate;

如果nginx服务器使用limit_rate配置了显示网络速率,则会显示,如果没有设置, 则显示0。

$remote_port;

客户端请求Nginx服务器时随机打开的端口,这是每个客户端自己的端口。

$remote_user;

已经经过Auth Basic Module验证的用户名。

$request_body_file;

做反向代理时发给后端服务器的本地资源的名称。

$request_method;

请求资源的方式,GET/PUT/DELETE等

$request_filename;

当前请求的资源文件的路径名称,由root或alias指令与URI请求生成的文件绝对路径,如/apps/nginx/html/main/index.html

$request_uri;

包含请求参数的原始URI,不包含主机名,如:/main/index.php?id=12&partner=search 。

$scheme;

请求的协议,如ftp,https,http等。

$server_protocol;

保存了客户端请求资源使用的协议的版本,如HTTP/1.0,HTTP/1.1,HTTP/2.0等。

$server_addr;

保存了服务器的IP地址。

$server_name;

请求的服务器的主机名。

$server_port;

请求的服务器的端口号。

六、nginx配置禁止访问目录或禁止访问目录下的文件

禁止访问目录下的文件

禁止访问特定后缀文件

location ~ \.(php|jsp|txt)$ {deny all;}

禁止访问某个目录下的php后缀文件

location /directory {location ~ .*\.(php)?$ {deny all;}}

禁止访问多个目录下的php后缀文件

location ~* ^/(directory1|directory2)/.*\.(php)${deny all;}

禁止访问目录或目录下文件

禁止访问目录

location ^~ /test/ {deny all;}

禁止访问目录下文件

location ^~ /test {deny all;}

nginx location 的匹配语法

= 表示精确匹配

^~ 表示uri以某个字符串开头

~ 正则匹配(区分大小写)

~* 正则匹配(不区分大小写) !和!*分别为区分大小写不匹配及不区分大小写不匹配的正则

/ 任何请求都会匹配

匹配优先级: = > ^~ > /

七、nginx 限流功能

配置如下:

http {limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;·······location / {limit_req zone=mylimit burst=5 nodelay;limit_req _log_level error;limit_req_status 503;·······}}

以上配置中使用的是nginx的ngx_http_limit_req_module模块,用来限制单个IP的请求数。

语法:limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;

说明:

1. $binary_remote_addr,表明是以remote_addr为限制目标,加上binary是为了压缩内存占用空间

2. zone=name:size,分配一个以name为名的并且大小为size的内存空间,用来存储访 问的频次信息

3. rate=rate, 如rate=1r/s表示同一个IP每秒只允许一个请求通过

语法:limit_req zone=name [burst=number] [nodelay | delay=number]; #放在location区域内

实例:limit_req zone=mylimit burst=5 nodelay;

说明:

1. zone=mylimit,对应http区域中配置的zone

2. burst=5,表示设置一个大小为5的缓冲区,超过频次限制的请求先放入这个缓冲区

3. nodelay,设置后超过频次限制以及缓冲区满了的情况下返回503状态码;如不设置,那么额外的请求将进入等待排队的状态

语法:limit_req_log_level info | notice | warn | error #可放入http, server, location区域

实例:limit_req_log_level error

说明:当超出限速及被缓存后,写入日志(对应相应的日志级别)

语法:limit_req_status code #可放入http, server, location区域

实例:limit_req_status 503

说明:自定义拒绝请求后返回的状态码

参考:Module ngx_http_limit_req_module ()/en/docs/http/ngx_http_limit_req_module.html

死磕nginx系列--nginx 限流配置 - biglittleant - 博客园 ()/biglittleant/p/8979915.html

八、Nginx 的 fastcgi 模块提供了 fastcgi_param 指令来处理这些映射关系

下面以 Ubuntu 下 Nginx 的一个配置文件,其主要完成的工作是将 Nginx 中的变量翻译成 PHP 中能够理解的变量。

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#脚本文件请求的路径,也就是说当访问127.0.0.1/index.php的时候,需要读取网站根目录下面的index.php文件,如果没有配置这一配置项时,nginx不回去网站根目录下访问.php文件,所以返回空白fastcgi_param QUERY_STRING $query_string; #请求的参数;如?app=123fastcgi_param REQUEST_METHOD $request_method;#请求的动作(GET,POST)fastcgi_param CONTENT_TYPE $content_type; #请求头中的Content-Type字段fastcgi_param CONTENT_LENGTH $content_length;#请求头中的Content-length字段。fastcgi_param SCRIPT_NAME $fastcgi_script_name; #脚本名称 fastcgi_param REQUEST_URI $request_uri;#请求的地址不带参数fastcgi_param DOCUMENT_URI $document_uri; #与$uri相同。 fastcgi_param DOCUMENT_ROOT $document_root; #网站的根目录。在server配置中root指令中指定的值 fastcgi_param SERVER_PROTOCOL $server_protocol; #请求使用的协议,通常是HTTP/1.0或HTTP/1.1。fastcgi_param GATEWAY_INTERFACE CGI/1.1;#cgi 版本fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; #nginx 版本号,可修改、隐藏fastcgi_param REMOTE_ADDR $remote_addr;#客户端IPfastcgi_param REMOTE_PORT $remote_port;#客户端端口fastcgi_param SERVER_ADDR $server_addr;#服务器IP地址fastcgi_param SERVER_PORT $server_port;#服务器端口fastcgi_param SERVER_NAME $server_name;#服务器名,域名在server配置中指定的server_namefastcgi_param PATH_INFO $path_info; #可自定义变量-- PHP only, required if PHP was built with --enable-force-cgi-redirectfastcgi_param REDIRECT_STATUS 200;

在php可打印出上面的服务环境变量 如:

echo $_SERVER['REMOTE_ADDR']

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。