我已经向 stackoverflow提出了同样的问题,但后来我认为它可能与此处更相关。
在 apache 的 httpd.confVirtualHost标签之间,我把<LimitExcept>表达式如下:
<VirtualHost *:80>
ServerName geopreprod.xxx.com.tr
<LimitExcept HEAD POST GET>
Deny from all
</LimitExcept>
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://XXXXXXXX...
ProxyPassReverse / http://XXXXXXXX....
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
然后 apache Web 服务器无法通过给出以下错误启动:
Syntax error on line 513 of XXXXX/httpd.conf:
deny not allowed here
Run Code Online (Sandbox Code Playgroud)
虽然它说<LimitExcept>可以VirtualHost在官方文档的标签中使用为什么我会收到这个错误?
在 apache 文档中它说:
Context: server config, virtual host, directory, .htaccess
Run Code Online (Sandbox Code Playgroud) 我试图拒绝访问我们在 Nginx 上运行的网站上的特定 URL,但允许从特定 IP 访问它,我一直在尝试使用 Location 摆弄,但似乎只是试图找到一个正确的目录而不是 URL。
这是我想出的,但只是返回了 404。
location /specificurl {
root /var/www/site1.com/current;
allow 123.123.123.123;
deny all;
}
Run Code Online (Sandbox Code Playgroud) 我目前在尝试使用socket.io需要来自服务器的 websockets 支持(反向代理)时遇到很多困难。
我想知道,是否还有其他支持 websockets 的 Web 服务器?
我在使用 nginx 时遇到的错误:
2012/05/22 02:19:34 [error] 28159#0: *5 connect() failed (111: Connection refused) while connecting to upstream,
client: my.ip.ad.dr,
server: localhost,
request: "GET /socket.io/1/?t=1337653158192 HTTP/1.1",
upstream: "http://127.0.0.1:3000/socket.io/1/?t=1337653158192",
host: "lifestore.brainpad.org", referrer: "http://mywebad.dr/"
Run Code Online (Sandbox Code Playgroud) 我使用 nginx 作为我现有 Web 服务器的反向代理。我只想管理一组自定义错误页面,最好在 nginx 内管理,因为这是最接近客户端的级别。
现在我可以使用error_pages和proxy_intercept_errors设置。然而:
在 400(错误请求)错误的情况下,我需要底层 Web 服务器能够通过一些 JSON 正文内容,详细说明请求错误的原因。所以我只需要一种禁用proxy_intercept_errors400 状态代码的方法。
对于任何状态代码,我从不想显示默认的 nginx 错误页面。现在从我所看到的,为了实现这一点,我需要明确列出可以想象的所有可能的状态代码,并为其提供一个错误页面?例如,而不仅仅是通配符 500 以上的所有错误。
我的问题是 - 上述两个问题是否可以在 nginx 本身内解决?如果没有,上述问题是否有明显的解决方案?
我在我的 nginx 服务器上设置了一个任意域配置 - 以减少打开新站点/域时所需的工作量。这个配置允许我简单地/usr/share/nginx/sites/用域/子域的名称创建一个文件夹,然后它就可以工作了。™
server {
# Catch all domains starting with only "www." and boot them to non "www." domain.
listen 80;
server_name ~^www\.(.*)$;
return 301 $scheme://$1$request_uri;
}
server {
# Catch all domains that do not start with "www."
listen 80;
server_name ~^(?!www\.).+;
client_max_body_size 20M;
# Send all requests to the appropriate host
root /usr/share/nginx/sites/$host;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
recursive_error_pages on;
error_page 400 /errorpages/error.php?e=400&u=$uri&h=$host&s=$scheme;
error_page 401 /errorpages/error.php?e=401&u=$uri&h=$host&s=$scheme; …Run Code Online (Sandbox Code Playgroud) 我在使用 wordpress 站点进入管理区域时遇到问题。
如果我输入:http : //www.beshan.com/wp-admin/
我得到一个无限重定向循环,但如果我输入:
http://www.beshan.com/wp-admin/index.php
有用
我客户端的服务器是centos linux + nginx
nginx.conf:
user www www;
worker_processes 8;
error_log logs/nginx_error.log crit;
#pid /usr/local/webserver/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 51200;
}
http
{
include mime.types;
default_type application/octet-stream;
#charset gb2312;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
server_tokens off;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout …Run Code Online (Sandbox Code Playgroud) 我注意到许多不同的 Web 和邮件服务器软件允许或要求您在单个 .pem 文件中提供 TLS 证书(包括服务器证书、CA 中间证书和 CA 根证书)和私钥。
因此,服务器将证书发送给每个尝试连接的客户端,但是,当然,您希望保持您的私钥安全和保密。那么,当它们都在同一个文件中时,这是如何工作的呢?软件是否知道只发送证书部分而从不发送私钥,即使它们在同一个文件中?
谢谢你。
我正在尝试为在维护期间向我的应用程序提出请求的客户提供维护页面。以下是我为此目的的 nginx 配置。
server {
recursive_error_pages on;
listen 80;
...
if (-f $document_root/maintenance.html) {
return 503;
}
error_page 404 /404.html;
error_page 500 502 504 /500.html;
error_page 503 @503;
location = /404.html {
root $document_root;
}
location = /500.html {
root $document_root;
}
location @503 {
error_page 405 =/maintenance.html;
if (-f $request_filename) {
break;
}
rewrite ^(.*)$ /maintenance.html break;
}
}
Run Code Online (Sandbox Code Playgroud)
假设我通过创建$document_root/maintenance.html. 这个文件中,正确地,是当用户与请求服务Accept的报头text/html。
$ curl http://server.com/ -i -v -X GET -H "Accept: text/html"
* Adding …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用经过认证的 ssl 密钥在我的 nginx 反向代理上安装 SSL,但是当我尝试重新启动服务器时收到此消息:
Restarting nginx: [emerg]: SSL_CTX_use_PrivateKey_file("/etc/nginx/conf.d/cert.key") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)
configuration file /etc/nginx/nginx.conf test failed
Run Code Online (Sandbox Code Playgroud)
每个文件都是 root:root 有 600 个权限我已经测试了证书并且它们通过这个网站进行了验证:http ://ssltools.com/cert_key_match
我的键中没有尾随奇怪的字符,每行有 64 个字符
这是我的配置文件
server {
listen 443;
server_name my.domain.com;
ssl on;
ssl_certificate conf.d/cert.pem;
ssl_certificate_key conf.d/cert.key;
location / {
proxy_pass http://upstream1;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Run Code Online (Sandbox Code Playgroud)
}
有任何想法吗?谢谢
许多下载管理器(例如this、this和this)支持通过多个并行连接(每个线程一个)下载文件。其概念是每个连接将单独下载文件的一部分。
例如,如果有 5 个连接,则第一个连接将下载文件的前 0-20% 部分,第二个连接将下载文件的 20-40% 部分,依此类推。
同样,在服务器端,将有 5 个线程,其中一个线程将并行读取文件的 20%。
但是,我认为尝试使用多个线程同时读取单个文件实际上会使下载速度明显变慢,因为机械磁盘的读取磁头将不得不比以前进行更多的搜索。
即使我们假设磁盘控制器排队机制足够智能,可以在一次顺序读取中将所有 5 个多部分请求一起批处理到单个文件,但与仅在一个线程中执行读取然后为该文件提供服务相比,它并没有给我们带来任何优势。仅通过 1 个 http 连接即可文件。
那么如何才能更快地并行下载文件呢?
networking performance hard-drive web-server multi-threading
web-server ×10
nginx ×7
linux ×2
ssl ×2
apache-2.2 ×1
debian ×1
email-server ×1
hard-drive ×1
networking ×1
performance ×1
socket ×1
tls ×1
wordpress ×1