使用Flask,NGINX和uWSGI我已经成功安装了一个应用程序,通过Twilio发送和接收文本消息。 一切工作都很完美,只是它在我的个人用户帐户(名为trinitrogen)下运行。 我想移动它来运行一个不同的用户帐户(命名应用程序),但是在systemd单元文件有问题。 我的困难的最大难题是,我什至不能find一个好logging错误,所以我不知道从哪里开始 首先,我基于这个教程所做的工作大部分都取得了成功,正是所分享的内容 我创build了新的用户,并将其添加到车轮 [apps@argon ~]$ groups apps wheel 将repo克隆到应用程序主目录中,在目录中设置名为venv的virtualenv,安装所有python软件包,在命令行中成功testing了uwsgi [apps@argon PowderMonitor]$ uwsgi –socket 10.0.0.221:8080 –protocol=http -w wsgi:app 它工作很好。 我开始设置systemd文件,但这是我碰到的一堵墙。 下面是当前文件,以及尝试重新启动服务后的输出。 [apps@argon PowderMonitor]$ cat /etc/systemd/system/TwilioApp.service [Unit] Description=uWSGI – TwilioApp – apps acccount After=network.target [Service] User=apps Group=nginx WorkingDirectory=/home/apps/PowderMonitor Environment="PATH=/home/apps/PowderMonitor/venv/bin" ExecStart=/home/apps/PowderMonitor/venv/bin/uwsgi –ini TwilioApp.ini [Install] WantedBy=multi-user.target [apps@argon PowderMonitor]$ sudo systemctl restart TwilioApp.service [apps@argon PowderMonitor]$ sudo systemctl […]
我一直试图让php-fpm(w nginx)与默认端口(9000)一起工作,它只是不工作。我试图使用PHP 7.1(也试过7.0和5.6)。 服务启动正常,我也可以看到打开的端口和正在监听ss / netstat。 在php-fpm日志中没有错误。 最初我以为它可能是一个nginx问题,但是当我尝试直接使用cgi-fcgi -bind -connect 127.0.0.1:9000来testing连接时,它只是不响应,最终得到一个无法连接的错误。 该请求不会logging在访问日志中(当访问日志启用时)。 # cgi-fcgi -bind -connect 127.0.0.1:9000 Could not connect to 127.0.0.1:9000 有些时候重新启动后,它只是随机工作几个请求(有时一个请求,有时10,不同),然后它只是停止工作了。 php-fpm状态下的请求计数不再增加。 它的行为没有韵律或节奏,我甚至找不到一致的方法让它工作,即使是那些less数的要求。 这个问题已经困扰了我两天了,而且它与原木中的任何东西都不一致。 请帮忙。 感谢提前回复。 我到目前为止所尝试的 – 用nginx进行testing,确保它不是cgi-fcgi问题。 在nginx中同样的问题也无法连接到上游。 设置php-fpm日志级别进行debugging,看看是否有东西popup。 没有什么不寻常的发现。 启用访问日志来查看请求是否达到php-fpm。 访问日志中没有input失败的请求。 将监听值更改为9000和0.0.0.0:9000以及external_ip:9000。 所有这些变化都没有改变行为。 更改为其他端口,以确保它不是正在使用的端口号。 增加和减lesspm.start_servers以及其他相关值,以检查其进程是否用完。 没有效果,事实上所有的进程只是闲置的时间。 删除并重新安装php-fpm 重置configuration,以确保它不是一个configuration问题 从remi repo而不是webstatic repo安装php-fpm,以确保它不是一个糟糕的构build 降级到PHP 7.0 停止所有其他服务,以确保没有冲突或类似 将listen.allowed_clients更改为“any”,以确保它的客户端不被拒绝 删除服务器并重新安装操作系统本身,以确保它连续2天尝试多个事情后,不是操作系统的问题。 (没有数据的空服务器) 它使用unix套接字而不是端口工作得很好。 但是套接字不能满足要求,因为它需要从mysql获得超过100行的内容,我注意到它在套接字模式下超时(> 30s)。 […]
我有一个服务器块,如下所示: server { listen 80; # … location / { try_files $uri $uri/ /index.php?$query_string; # I've tried adding "$uri.php" like so, but it downloads the php file instead. # try_files $uri $uri/ $uri.php /index.php?$query_string; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.1-fpm.sock; fastcgi_index index.php; include fastcgi_params; } } 如果这样的请求来自http://example.com/random/page ,我需要Nginx将其重写到http://example.com/random/page.php而无需更改用户的url。 它还需要将该请求传递给其他位置块。 如果该文件不存在,它应该返回一个404。我怎样才能做到这一点?
我需要你的帮助设置位置允许, location /route { deny [my-ip]; } 所以这个工作,它不会让我访问路线 抛出这个错误 403 Forbidden nginx/1.10.0 (Ubuntu) 和这个… location /route { allow [my-ip]; deny all; } 不让我访问,但它应该让我访问的路线,不明白为什么,它显示这个错误 404 Not Found nginx/1.10.0 (Ubuntu) configuration文件(在路由上有两个例子): server { listen 80 default_server; listen [::]:80 default_server; # SSL configuration # # listen 443 ssl default_server; # listen [::]:443 ssl default_server; # # Note: You […]
我在Mac上通过Homebrew安装了nginx。 我最近试图添加一个虚拟的PHP服务器。 当我访问正确的文件名时,它工作正常,但是当try块被调用或者索引文件应该被提供时,会产生许可错误。 #200 : http://php-sandbox.dev/index.php #404 : http://php-sandbox.dev/index http://php-sandbox.dev/ index.php文件存在于根目录的web目录中,与其path中的所有文件夹一样,它具有744个权限。 索引指令显然被忽略。 看下面的例子和错误以及我的nginxconfiguration。 nginx的站点configuration文件: server { listen 80; listen [::]:80; error_log /var/log/nginx/php-sandbox/error.log debug; rewrite_log on; server_name php-sandbox.dev; root /Users/sswright/repos/jswright61/php-sandbox/public; index index.php index.html; include drop.conf; #ignores favicons location / { try_files $uri $uri.php $uri/ =404; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include […]
在一个研究项目中,我创build了一个带有节点的networking应用 节点服务器托pipe在托pipe在物理机器上的虚拟机中,托pipe在作为逆向代理的Nginx服务器上的另一台机器与networking隔离。 我注意到一些POST请求发送到Web应用程序到达Nginx(它被logging),但从来没有到达节点服务器(服务器没有反应,而不是在日志logging器生成的日志中的提示。最令人惊讶的是,相同请求可能或不能到达第二台机器,似乎总是随机的,我的意思是我无法预测一个请求是否会成功,但如果不是,我可以再试一次,直到它工作,它会工作。这是/ etc / nginx / proxy_params: proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Host $http_host; 这里是site-available中的nginx文件: server { listen 443 ssl spdy; ## listen for ipv4 keepalive_timeout 70; server_name 10patch.server.com 10patch; include error_params; location / { […]
我有一个运行在App Engine中的webserver容器,它提供了一个REST API。 我试图去一个相对标准的实现 – nginx + PHP-FPM使用TCP套接字(我没有得到一个unix套接字工作出于某种原因)。 数据库连接也是通过Google Cloud VPN运行的TCP套接字。 问题 我在API上获得了〜25%的可用性。 在最大时间(App Engine的nginx代理设置为60秒)之后,通常请求将会发生504 Gateway Timeout 。 有时候,如果PHP-FPM超时( request_terminate_timeout ),将会出现502 Bad Gateway 。 我试图找出这是否是App Engine nginxconfiguration不当,我的nginx或我的PHP-FPMconfiguration。 Nginx应该closures套接字或者重用它们,但是它似乎并没有这样做。 客户端 当我siege任何给定的端点(25个用户)几分钟,我看到: HTTP/1.1 504 60.88 secs: 176 bytes ==> GET /path/to/rest …15 lines… HTTP/1.1 504 61.23 secs: 176 bytes ==> GET /path/to/rest HTTP/1.1 200 57.54 secs: 13143 […]
我有一个非常恼人的问题,而PDF的我试图从网站下载得到腐败。 他们生成的很好(我可以看到,如果我通过SFTP从他们被放置在临时文件夹下载)。 location ~ \.cgi$ { #try_files $uri =404; gzip off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8181; } Perl代码非常简单(我不会打扰把PDF生成代码,以及工作正常); my $filepath = qq|/home/fatpeter/web/site.com/cgi-bin/hotels/admin/tmp_pdf/| . CORE::time() . q|.pdf|; $pdf->to_file($filepath); $file_name =~ s/\-/_/sig; my $size = -s $filepath; my $file = \do { local *FH; *FH }; open $file, "<$filepath" or die […]
我有Nginx 1.10与ssl_verify_client = on 。 一切工作正常,除了服务器完成TLS握手,并继续parsing头,即使证书还没有被客户端发送。 可以通过发送没有客户端证书和非常大的http头的http请求来validation,nginx返回“ 400请求头或Cookie太大 ”。 据我们的安全审计员,服务器应该失败的TLS握手,因为parsing头“增加了可能的攻击面。 我的nginxconfiguration: server { listen 443 ssl default_server; listen [::]:443 ssl default_server; server_name myserver.com; ssl_certificate /etc/letsencrypt/live/myserver.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/myserver.com/privkey.pem; ssl_verify_client on; ssl_client_certificate /etc/nginx/ssl/ca.pem; location / { proxy_pass http://127.0.0.1:8001; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
我读过一些文章( 主要是这个 ),但我仍然不明白为什么我的url没有正确redirect。 我在运行Ubuntu-Server的192.168.1.4上有一个虚拟的。 我已经安装了nginx,我可以看到nginx的欢迎页面。 我的路由器端口80的所有stream量都被成功redirect到192.168.1.4。 我有这些网站: Site1 – 192.168.1.3:9810 (IIS) – www.mydomain1.com 192.168.1.1 Site2 – 192.168.1.1:8080 (admin page for my server) www.mydomain2.com Site3 – 192.168.1.1:81 (a wordpress site) www.mydomain3.com 现在有了这三个域,我打到了nginx的欢迎页面,所以我知道问题出在我的configuration上,如下所示: server { listen 80; server_name mydomain1.com; location / { proxy_pass http://192.168.1.3:9810; } } server { listen 80; server_name mydomain2.com; location / { proxy_pass http://192.168.1.1:8080; […]